mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-10-28 20:04:14 +00:00
LibJS: Elide function wrapper for class field literal initializers
If a class field initializer is just a simple literal, we can skip creating (and calling) a wrapper function for it entirely. 1.44x speedup on JetStream3/raytrace-private-class-fields.js 1.53x speedup on JetStream3/raytrace-public-class-fields.js
This commit is contained in:
parent
fd147e6be0
commit
6bb0d585e3
Notes:
github-actions[bot]
2025-04-01 21:56:14 +00:00
Author: https://github.com/awesomekling
Commit: 6bb0d585e3
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/4180
5 changed files with 61 additions and 22 deletions
|
|
@ -553,7 +553,14 @@ void ECMAScriptFunctionObject::visit_edges(Visitor& visitor)
|
|||
visitor.visit(m_bytecode_executable);
|
||||
|
||||
for (auto& field : m_fields) {
|
||||
visitor.visit(field.initializer);
|
||||
field.initializer.visit(
|
||||
[&visitor](GC::Ref<ECMAScriptFunctionObject>& initializer) {
|
||||
visitor.visit(initializer);
|
||||
},
|
||||
[&visitor](Value initializer) {
|
||||
visitor.visit(initializer);
|
||||
},
|
||||
[](Empty) {});
|
||||
if (auto* property_key_ptr = field.name.get_pointer<PropertyKey>(); property_key_ptr && property_key_ptr->is_symbol())
|
||||
visitor.visit(property_key_ptr->as_symbol());
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue