1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 06:58:11 +00:00
serenity/Libraries/LibJS/Runtime
Andreas Kling 69bae3fd9a LibJS: Prevent object shape transitions during runtime object buildup
While initialization common runtime objects like functions, prototypes,
etc, we don't really care about tracking transitions for each and every
property added to them.

This patch puts objects into a "disable transitions" mode while we call
initialize() on them. After that, adding more properties will cause new
transitions to be generated and added to the chain.

This gives a ~10% speed-up on test-js. :^)
2020-10-05 20:53:00 +02:00
..
Accessor.h LibJS: Don't require Interpreter& for constructing an Accessor 2020-09-27 20:26:58 +02:00
Array.cpp LibJS: Remove a bunch of unnecessary uses of Cell::interpreter() 2020-09-27 20:26:58 +02:00
Array.h LibJS: Make native function/property callbacks take VM, not Interpreter 2020-09-27 20:26:58 +02:00
ArrayConstructor.cpp LibJS: Remove a whole bunch of includes of <LibJS/Interpreter.h> 2020-09-27 20:26:58 +02:00
ArrayConstructor.h LibJS: Remove Interpreter& argument to Function::construct() 2020-09-27 20:26:58 +02:00
ArrayIterator.cpp Meta+LibHTTP through LibWeb: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
ArrayIterator.h LibJS: ArrayIterator needs to mark the array it's iterating 2020-09-08 16:20:34 +02:00
ArrayIteratorPrototype.cpp LibJS: Make native function/property callbacks take VM, not Interpreter 2020-09-27 20:26:58 +02:00
ArrayIteratorPrototype.h LibJS: Simplify Cell::initialize() 2020-07-23 17:31:08 +02:00
ArrayPrototype.cpp LibJS: Use String::formatted() for throw_exception() message 2020-10-04 19:22:02 +02:00
ArrayPrototype.h LibJS: Simplify Cell::initialize() 2020-07-23 17:31:08 +02:00
BigInt.cpp LibJS: Remove a whole bunch of includes of <LibJS/Interpreter.h> 2020-09-27 20:26:58 +02:00
BigInt.h LibJS: Use string::formatted() in to_string() functions 2020-10-04 19:22:02 +02:00
BigIntConstructor.cpp LibJS: Remove a whole bunch of includes of <LibJS/Interpreter.h> 2020-09-27 20:26:58 +02:00
BigIntConstructor.h LibJS: Remove Interpreter& argument to Function::construct() 2020-09-27 20:26:58 +02:00
BigIntObject.cpp LibJS: Remove a whole bunch of includes of <LibJS/Interpreter.h> 2020-09-27 20:26:58 +02:00
BigIntObject.h LibJS+LibWeb: Add JS::Object::inherits(class_name) 2020-06-21 15:15:52 +02:00
BigIntPrototype.cpp LibJS: Remove a whole bunch of includes of <LibJS/Interpreter.h> 2020-09-27 20:26:58 +02:00
BigIntPrototype.h LibJS: Simplify Cell::initialize() 2020-07-23 17:31:08 +02:00
BooleanConstructor.cpp LibJS: Remove a whole bunch of includes of <LibJS/Interpreter.h> 2020-09-27 20:26:58 +02:00
BooleanConstructor.h LibJS: Remove Interpreter& argument to Function::construct() 2020-09-27 20:26:58 +02:00
BooleanObject.cpp LibJS: Remove a bunch of unnecessary uses of Cell::interpreter() 2020-09-27 20:26:58 +02:00
BooleanObject.h LibJS+LibWeb: Add JS::Object::inherits(class_name) 2020-06-21 15:15:52 +02:00
BooleanPrototype.cpp LibJS: Remove a whole bunch of includes of <LibJS/Interpreter.h> 2020-09-27 20:26:58 +02:00
BooleanPrototype.h LibJS: Simplify Cell::initialize() 2020-07-23 17:31:08 +02:00
BoundFunction.cpp LibJS: Use String::formatted() in various other places 2020-10-04 19:22:02 +02:00
BoundFunction.h LibJS: Move "strict mode" state to the call stack 2020-10-04 17:03:33 +02:00
Cell.cpp LibJS: Remove Cell::interpreter() 2020-10-04 17:03:33 +02:00
Cell.h LibJS: Remove Cell::interpreter() 2020-10-04 17:03:33 +02:00
ConsoleObject.cpp LibJS: Move Console from Interpreter to GlobalObject 2020-09-29 21:15:06 +02:00
ConsoleObject.h LibJS: Simplify Cell::initialize() 2020-07-23 17:31:08 +02:00
Date.cpp LibJS: Remove a whole bunch of includes of <LibJS/Interpreter.h> 2020-09-27 20:26:58 +02:00
Date.h LibJS: Use String::formatted() in various other places 2020-10-04 19:22:02 +02:00
DateConstructor.cpp LibJS: Remove a whole bunch of includes of <LibJS/Interpreter.h> 2020-09-27 20:26:58 +02:00
DateConstructor.h LibJS: Remove Interpreter& argument to Function::construct() 2020-09-27 20:26:58 +02:00
DatePrototype.cpp LibJS: Remove a whole bunch of includes of <LibJS/Interpreter.h> 2020-09-27 20:26:58 +02:00
DatePrototype.h Meta+LibHTTP through LibWeb: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
Error.cpp LibJS: Remove a bunch of unnecessary uses of Cell::interpreter() 2020-09-27 20:26:58 +02:00
Error.h LibJS+LibWeb: Add JS::Object::inherits(class_name) 2020-06-21 15:15:52 +02:00
ErrorConstructor.cpp LibJS: Remove a whole bunch of includes of <LibJS/Interpreter.h> 2020-09-27 20:26:58 +02:00
ErrorConstructor.h LibJS: Remove Interpreter& argument to Function::construct() 2020-09-27 20:26:58 +02:00
ErrorPrototype.cpp LibJS: Use string::formatted() in to_string() functions 2020-10-04 19:22:02 +02:00
ErrorPrototype.h Meta+LibHTTP through LibWeb: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
ErrorTypes.cpp Meta+LibHTTP through LibWeb: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
ErrorTypes.h LibJS: Use String::formatted() for throw_exception() message 2020-10-04 19:22:02 +02:00
Exception.cpp LibJS: Remove a whole bunch of includes of <LibJS/Interpreter.h> 2020-09-27 20:26:58 +02:00
Exception.h LibJS: Move most of Interpreter into VM 2020-09-27 20:26:58 +02:00
Function.cpp LibJS: Move "strict mode" state to the call stack 2020-10-04 17:03:33 +02:00
Function.h LibJS: Move "strict mode" state to the call stack 2020-10-04 17:03:33 +02:00
FunctionConstructor.cpp LibJS: Use String::formatted() in various other places 2020-10-04 19:22:02 +02:00
FunctionConstructor.h LibJS: Remove Interpreter& argument to Function::construct() 2020-09-27 20:26:58 +02:00
FunctionPrototype.cpp LibJS: Use string::formatted() in to_string() functions 2020-10-04 19:22:02 +02:00
FunctionPrototype.h LibJS: Simplify Cell::initialize() 2020-07-23 17:31:08 +02:00
GlobalObject.cpp LibJS: Make global objects have unique shape from the start 2020-10-04 22:56:45 +02:00
GlobalObject.h LibJS: Move Console from Interpreter to GlobalObject 2020-09-29 21:15:06 +02:00
IndexedProperties.cpp LibJS: Don't require Interpreter& for constructing an Accessor 2020-09-27 20:26:58 +02:00
IndexedProperties.h LibJS: Eliminate some (unnecessary) Vector copies 2020-09-08 13:43:03 +02:00
IteratorOperations.cpp LibJS: Use String::formatted() for throw_exception() message 2020-10-04 19:22:02 +02:00
IteratorOperations.h LibJS: get_iterator_values() should pass Value to callback (not Value&) 2020-09-08 14:15:13 +02:00
IteratorPrototype.cpp LibJS: Remove a whole bunch of includes of <LibJS/Interpreter.h> 2020-09-27 20:26:58 +02:00
IteratorPrototype.h LibJS: Simplify Cell::initialize() 2020-07-23 17:31:08 +02:00
JSONObject.cpp LibJS: Use String::formatted() in various other places 2020-10-04 19:22:02 +02:00
JSONObject.h LibJS: Remove use of Interpreter& in JSONObject code 2020-09-27 20:26:58 +02:00
LexicalEnvironment.cpp LibJS: Reduce use of Interpreter in LexicalEnvironment 2020-09-29 16:41:28 +02:00
LexicalEnvironment.h LibJS: Reduce use of Interpreter in LexicalEnvironment 2020-09-29 16:41:28 +02:00
MarkedValueList.cpp LibJS: Make MarkedValueList inherit from Vector<Value> 2020-09-08 13:43:03 +02:00
MarkedValueList.h LibJS: Make MarkedValueList inherit from Vector<Value> 2020-09-08 13:43:03 +02:00
MathObject.cpp LibJS: Remove a whole bunch of includes of <LibJS/Interpreter.h> 2020-09-27 20:26:58 +02:00
MathObject.h LibJS: Simplify Cell::initialize() 2020-07-23 17:31:08 +02:00
NativeFunction.cpp LibJS: Move "strict mode" state to the call stack 2020-10-04 17:03:33 +02:00
NativeFunction.h LibJS: Move "strict mode" state to the call stack 2020-10-04 17:03:33 +02:00
NativeProperty.cpp LibJS: Make native function/property callbacks take VM, not Interpreter 2020-09-27 20:26:58 +02:00
NativeProperty.h LibJS: Make native function/property callbacks take VM, not Interpreter 2020-09-27 20:26:58 +02:00
NumberConstructor.cpp LibJS: Remove a whole bunch of includes of <LibJS/Interpreter.h> 2020-09-27 20:26:58 +02:00
NumberConstructor.h LibJS: Remove Interpreter& argument to Function::construct() 2020-09-27 20:26:58 +02:00
NumberObject.cpp LibJS: Remove a whole bunch of includes of <LibJS/Interpreter.h> 2020-09-27 20:26:58 +02:00
NumberObject.h LibJS: Add Number.prototype.toString 2020-07-15 18:24:55 +02:00
NumberPrototype.cpp LibJS: Remove a whole bunch of includes of <LibJS/Interpreter.h> 2020-09-27 20:26:58 +02:00
NumberPrototype.h LibJS: Simplify Cell::initialize() 2020-07-23 17:31:08 +02:00
Object.cpp LibJS: Prevent object shape transitions during runtime object buildup 2020-10-05 20:53:00 +02:00
Object.h LibJS: Prevent object shape transitions during runtime object buildup 2020-10-05 20:53:00 +02:00
ObjectConstructor.cpp LibJS: Use String::formatted() for throw_exception() message 2020-10-04 19:22:02 +02:00
ObjectConstructor.h LibJS: Remove Interpreter& argument to Function::construct() 2020-09-27 20:26:58 +02:00
ObjectPrototype.cpp LibJS: Use string::formatted() in to_string() functions 2020-10-04 19:22:02 +02:00
ObjectPrototype.h LibJS: Simplify Cell::initialize() 2020-07-23 17:31:08 +02:00
PrimitiveString.cpp LibJS: Remove js_string(Interpreter&, ...) 2020-09-27 20:26:58 +02:00
PrimitiveString.h LibJS: Remove js_string(Interpreter&, ...) 2020-09-27 20:26:58 +02:00
PropertyAttributes.cpp LibJS: Add Proxy objects 2020-06-06 22:13:01 +02:00
PropertyAttributes.h Meta+LibHTTP through LibWeb: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
PropertyName.h LibJS: Don't require Interpreter& in PropertyName and StringOrSymbol 2020-09-27 20:26:58 +02:00
ProxyConstructor.cpp LibJS: Use String::formatted() for throw_exception() message 2020-10-04 19:22:02 +02:00
ProxyConstructor.h LibJS: Remove Interpreter& argument to Function::construct() 2020-09-27 20:26:58 +02:00
ProxyObject.cpp LibJS: Use String::formatted() for throw_exception() message 2020-10-04 19:22:02 +02:00
ProxyObject.h LibJS: Remove Interpreter& argument to Function::construct() 2020-09-27 20:26:58 +02:00
ProxyPrototype.cpp LibJS: Remove a whole bunch of includes of <LibJS/Interpreter.h> 2020-09-27 20:26:58 +02:00
ProxyPrototype.h LibJS+LibWeb: Add JS::Object::inherits(class_name) 2020-06-21 15:15:52 +02:00
Reference.cpp LibJS: Use String::formatted() for throw_exception() message 2020-10-04 19:22:02 +02:00
Reference.h LibJS: Reduce use of Interpreter in Reference 2020-09-29 16:45:39 +02:00
ReflectObject.cpp LibJS: Use String::formatted() for throw_exception() message 2020-10-04 19:22:02 +02:00
ReflectObject.h LibJS: Simplify Cell::initialize() 2020-07-23 17:31:08 +02:00
RegExpConstructor.cpp LibJS: Remove a whole bunch of includes of <LibJS/Interpreter.h> 2020-09-27 20:26:58 +02:00
RegExpConstructor.h LibJS: Remove Interpreter& argument to Function::construct() 2020-09-27 20:26:58 +02:00
RegExpObject.cpp LibJS: Use string::formatted() in to_string() functions 2020-10-04 19:22:02 +02:00
RegExpObject.h LibJS+LibWeb: Add JS::Object::inherits(class_name) 2020-06-21 15:15:52 +02:00
RegExpPrototype.cpp LibJS: Remove a whole bunch of includes of <LibJS/Interpreter.h> 2020-09-27 20:26:58 +02:00
RegExpPrototype.h LibJS+LibWeb: Add JS::Object::inherits(class_name) 2020-06-21 15:15:52 +02:00
ScriptFunction.cpp LibJS: Use String::formatted() for throw_exception() message 2020-10-04 19:22:02 +02:00
ScriptFunction.h LibJS: Move "strict mode" state to the call stack 2020-10-04 17:03:33 +02:00
Shape.cpp LibJS: Prevent object shape transitions during runtime object buildup 2020-10-05 20:53:00 +02:00
Shape.h LibJS: Prevent object shape transitions during runtime object buildup 2020-10-05 20:53:00 +02:00
StringConstructor.cpp LibJS: Add Value::is_nullish() 2020-10-02 18:01:27 +02:00
StringConstructor.h LibJS: Remove Interpreter& argument to Function::construct() 2020-09-27 20:26:58 +02:00
StringIterator.cpp Meta+LibHTTP through LibWeb: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
StringIterator.h LibJS: Add StringIterator 2020-07-13 15:07:29 +02:00
StringIteratorPrototype.cpp LibJS: Make native function/property callbacks take VM, not Interpreter 2020-09-27 20:26:58 +02:00
StringIteratorPrototype.h LibJS: Simplify Cell::initialize() 2020-07-23 17:31:08 +02:00
StringObject.cpp LibJS: Remove a whole bunch of includes of <LibJS/Interpreter.h> 2020-09-27 20:26:58 +02:00
StringObject.h LibJS+LibWeb: Add JS::Object::inherits(class_name) 2020-06-21 15:15:52 +02:00
StringOrSymbol.h LibJS: Add StringOrSymbol::as_string_impl() helper 2020-10-05 17:35:27 +02:00
StringPrototype.cpp LibJS: Use String::formatted() in various other places 2020-10-04 19:22:02 +02:00
StringPrototype.h LibJS: Simplify Cell::initialize() 2020-07-23 17:31:08 +02:00
Symbol.cpp LibJS: Remove a whole bunch of includes of <LibJS/Interpreter.h> 2020-09-27 20:26:58 +02:00
Symbol.h LibJS: Use string::formatted() in to_string() functions 2020-10-04 19:22:02 +02:00
SymbolConstructor.cpp LibJS: Use String::formatted() for throw_exception() message 2020-10-04 19:22:02 +02:00
SymbolConstructor.h LibJS: Remove Interpreter& argument to Function::construct() 2020-09-27 20:26:58 +02:00
SymbolObject.cpp LibJS: Remove a whole bunch of includes of <LibJS/Interpreter.h> 2020-09-27 20:26:58 +02:00
SymbolObject.h LibJS: Move global symbol map from SymbolObject to Interpreter 2020-07-09 23:29:28 +02:00
SymbolPrototype.cpp LibJS: Remove a whole bunch of includes of <LibJS/Interpreter.h> 2020-09-27 20:26:58 +02:00
SymbolPrototype.h LibJS: Simplify Cell::initialize() 2020-07-23 17:31:08 +02:00
Uint8ClampedArray.cpp LibJS: Remove a bunch of unnecessary uses of Cell::interpreter() 2020-09-27 20:26:58 +02:00
Uint8ClampedArray.h LibJS+LibWeb: Add JS::Object::inherits(class_name) 2020-06-21 15:15:52 +02:00
Value.cpp LibJS: Use string::formatted() in to_string() functions 2020-10-04 19:22:02 +02:00
Value.h LibJS: Add Value::is_nullish() 2020-10-02 18:01:27 +02:00
VM.cpp LibJS: Avoid an unnecessary MarkedValueList copy in VM::call_internal() 2020-10-04 22:42:24 +02:00
VM.h LibJS: Use String::formatted() for throw_exception() message 2020-10-04 19:22:02 +02:00