1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 05:08:13 +00:00
serenity/Libraries/LibJS/Runtime
Andreas Kling 6861c619c6 LibJS: Move most of Interpreter into VM
This patch moves the exception state, call stack and scope stack from
Interpreter to VM. I'm doing this to help myself discover what the
split between Interpreter and VM should be, by shuffling things around
and seeing what falls where.

With these changes, we no longer have a persistent lexical environment
for the current global object on the Interpreter's call stack. Instead,
we push/pop that environment on Interpreter::run() enter/exit.
Since it should only be used to find the global "this", and not for
variable storage (that goes directly into the global object instead!),
I had to insert some short-circuiting when walking the environment
parent chain during variable lookup.

Note that this is a "stepping stone" commit, not a final design.
2020-09-27 20:26:58 +02:00
..
Accessor.h LibJS: Add a helper for calling JS::Function's with arguments 2020-08-26 08:45:01 +02:00
Array.cpp LibJS: Move most of Interpreter into VM 2020-09-27 20:26:58 +02:00
Array.h LibJS+LibWeb: Add JS::Object::inherits(class_name) 2020-06-21 15:15:52 +02:00
ArrayConstructor.cpp LibJS: Move most of Interpreter into VM 2020-09-27 20:26:58 +02:00
ArrayConstructor.h LibJS: Implement basic functionality of Array.from() 2020-08-17 21:23:11 +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: Move most of Interpreter into VM 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: Move most of Interpreter into VM 2020-09-27 20:26:58 +02:00
ArrayPrototype.h LibJS: Simplify Cell::initialize() 2020-07-23 17:31:08 +02:00
BigInt.cpp LibJS: Use allocate_without_global_object for primitive cell types 2020-07-25 13:12:17 +02:00
BigInt.h LibJS: Add BigInt 2020-06-07 19:29:40 +02:00
BigIntConstructor.cpp LibJS: Move most of Interpreter into VM 2020-09-27 20:26:58 +02:00
BigIntConstructor.h LibJS: Simplify Cell::initialize() 2020-07-23 17:31:08 +02:00
BigIntObject.cpp LibJS: Clarify Object (base class) construction somewhat 2020-06-23 17:21:53 +02:00
BigIntObject.h LibJS+LibWeb: Add JS::Object::inherits(class_name) 2020-06-21 15:15:52 +02:00
BigIntPrototype.cpp LibJS: Move most of Interpreter into VM 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: Simplify Cell::initialize() 2020-07-23 17:31:08 +02:00
BooleanConstructor.h LibJS: Simplify Cell::initialize() 2020-07-23 17:31:08 +02:00
BooleanObject.cpp LibJS: Clarify Object (base class) construction somewhat 2020-06-23 17:21:53 +02:00
BooleanObject.h LibJS+LibWeb: Add JS::Object::inherits(class_name) 2020-06-21 15:15:52 +02:00
BooleanPrototype.cpp LibJS: Move most of Interpreter into VM 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: Simplify Cell::initialize() 2020-07-23 17:31:08 +02:00
BoundFunction.h LibJS: Simplify Cell::initialize() 2020-07-23 17:31:08 +02:00
Cell.cpp LibJS: Add a way to get from a Cell to the VM 2020-09-22 20:10:20 +02:00
Cell.h LibJS: Add a way to get from a Cell to the VM 2020-09-22 20:10:20 +02:00
ConsoleObject.cpp LibJS: Simplify Cell::initialize() 2020-07-23 17:31:08 +02:00
ConsoleObject.h LibJS: Simplify Cell::initialize() 2020-07-23 17:31:08 +02:00
Date.cpp LibJS: Make Date.getUTCSeconds() call through to LibC 2020-08-24 18:21:16 +02:00
Date.h LibJS: Make Date.getUTCSeconds() call through to LibC 2020-08-24 18:21:16 +02:00
DateConstructor.cpp Meta+LibHTTP through LibWeb: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
DateConstructor.h LibJS: Implement Date.parse() 2020-08-21 21:12:54 +02:00
DatePrototype.cpp LibJS: Move most of Interpreter into VM 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 Meta+LibHTTP through LibWeb: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
Error.h LibJS+LibWeb: Add JS::Object::inherits(class_name) 2020-06-21 15:15:52 +02:00
ErrorConstructor.cpp Meta+LibHTTP through LibWeb: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
ErrorConstructor.h Meta+LibHTTP through LibWeb: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
ErrorPrototype.cpp LibJS: Move most of Interpreter into VM 2020-09-27 20:26:58 +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 Meta+LibHTTP through LibWeb: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
Exception.cpp LibJS: Move most of Interpreter into VM 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: Clarify Object (base class) construction somewhat 2020-06-23 17:21:53 +02:00
Function.h LibJS: Simplify Cell::initialize() 2020-07-23 17:31:08 +02:00
FunctionConstructor.cpp LibJS: Move most of Interpreter into VM 2020-09-27 20:26:58 +02:00
FunctionConstructor.h LibJS: Simplify Cell::initialize() 2020-07-23 17:31:08 +02:00
FunctionPrototype.cpp LibJS: Move most of Interpreter into VM 2020-09-27 20:26:58 +02:00
FunctionPrototype.h LibJS: Simplify Cell::initialize() 2020-07-23 17:31:08 +02:00
GlobalObject.cpp LibJS+Clients: Add JS::VM object, separate Heap from Interpreter 2020-09-20 19:24:44 +02:00
GlobalObject.h Meta+LibHTTP through LibWeb: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
IndexedProperties.cpp LibJS: Eliminate some (unnecessary) Vector copies 2020-09-08 13:43:03 +02:00
IndexedProperties.h LibJS: Eliminate some (unnecessary) Vector copies 2020-09-08 13:43:03 +02:00
IteratorOperations.cpp LibJS: Move most of Interpreter into VM 2020-09-27 20:26:58 +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: Move well-known symbols to the VM 2020-09-22 20:10:20 +02:00
IteratorPrototype.h LibJS: Simplify Cell::initialize() 2020-07-23 17:31:08 +02:00
JSONObject.cpp LibJS: Move most of Interpreter into VM 2020-09-27 20:26:58 +02:00
JSONObject.h LibJS: Simplify Cell::initialize() 2020-07-23 17:31:08 +02:00
LexicalEnvironment.cpp LibJS: Move most of Interpreter into VM 2020-09-27 20:26:58 +02:00
LexicalEnvironment.h LibJS: Move most of Interpreter into VM 2020-09-27 20:26:58 +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: Move well-known symbols to the VM 2020-09-22 20:10:20 +02:00
MathObject.h LibJS: Simplify Cell::initialize() 2020-07-23 17:31:08 +02:00
NativeFunction.cpp LibJS: Remove unused argument in NativeFunction constructor 2020-09-20 19:11:11 +02:00
NativeFunction.h LibJS: Remove unused argument in NativeFunction constructor 2020-09-20 19:11:11 +02:00
NativeProperty.cpp LibJS: Make NativeProperty a plain Cell instead of an Object 2020-06-23 17:56:57 +02:00
NativeProperty.h LibJS: Make NativeProperty a plain Cell instead of an Object 2020-06-23 17:56:57 +02:00
NumberConstructor.cpp LibJS: Simplify Cell::initialize() 2020-07-23 17:31:08 +02:00
NumberConstructor.h LibJS: Simplify Cell::initialize() 2020-07-23 17:31:08 +02:00
NumberObject.cpp LibJS: Clarify Object (base class) construction somewhat 2020-06-23 17:21:53 +02:00
NumberObject.h LibJS: Add Number.prototype.toString 2020-07-15 18:24:55 +02:00
NumberPrototype.cpp LibJS: Move most of Interpreter into VM 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: Move most of Interpreter into VM 2020-09-27 20:26:58 +02:00
Object.h LibJS: Use VM::exception() instead of Interpreter::exception() a bunch 2020-09-22 20:10:20 +02:00
ObjectConstructor.cpp LibJS: Move most of Interpreter into VM 2020-09-27 20:26:58 +02:00
ObjectConstructor.h LibJS: Simplify Cell::initialize() 2020-07-23 17:31:08 +02:00
ObjectPrototype.cpp Meta+LibHTTP through LibWeb: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
ObjectPrototype.h LibJS: Simplify Cell::initialize() 2020-07-23 17:31:08 +02:00
PrimitiveString.cpp LibJS: Let the VM cache an empty ("") PrimitiveString 2020-09-22 20:10:20 +02:00
PrimitiveString.h LibJS: Add js_string(Interpreter&, String) 2020-04-04 12:58:05 +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: Integrate Symbols into objects as valid keys 2020-07-09 23:33:00 +02:00
ProxyConstructor.cpp LibJS: Move most of Interpreter into VM 2020-09-27 20:26:58 +02:00
ProxyConstructor.h LibJS: Simplify Cell::initialize() 2020-07-23 17:31:08 +02:00
ProxyObject.cpp LibJS: Move most of Interpreter into VM 2020-09-27 20:26:58 +02:00
ProxyObject.h LibJS: Implement spec-compliant Object.prototype.toString 2020-07-11 23:13:29 +02:00
ProxyPrototype.cpp LibJS: Clarify Object (base class) construction somewhat 2020-06-23 17:21:53 +02:00
ProxyPrototype.h LibJS+LibWeb: Add JS::Object::inherits(class_name) 2020-06-21 15:15:52 +02:00
Reference.cpp LibJS: Move most of Interpreter into VM 2020-09-27 20:26:58 +02:00
Reference.h LibJS: Pass GlobalObject& to Reference get/put 2020-06-20 17:50:48 +02:00
ReflectObject.cpp LibJS: Move most of Interpreter into VM 2020-09-27 20:26:58 +02:00
ReflectObject.h LibJS: Simplify Cell::initialize() 2020-07-23 17:31:08 +02:00
RegExpConstructor.cpp LibJS: Simplify Cell::initialize() 2020-07-23 17:31:08 +02:00
RegExpConstructor.h LibJS: Simplify Cell::initialize() 2020-07-23 17:31:08 +02:00
RegExpObject.cpp Meta+LibHTTP through LibWeb: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
RegExpObject.h LibJS+LibWeb: Add JS::Object::inherits(class_name) 2020-06-21 15:15:52 +02:00
RegExpPrototype.cpp LibJS: Move native objects towards two-pass construction 2020-06-20 15:46:30 +02:00
RegExpPrototype.h LibJS+LibWeb: Add JS::Object::inherits(class_name) 2020-06-21 15:15:52 +02:00
ScriptFunction.cpp LibJS: Move most of Interpreter into VM 2020-09-27 20:26:58 +02:00
ScriptFunction.h LibJS: Simplify Cell::initialize() 2020-07-23 17:31:08 +02:00
Shape.cpp LibJS: Don't allocate property table during GC marking phase 2020-09-20 19:11:49 +02:00
Shape.h LibJS: Integrate Symbols into objects as valid keys 2020-07-09 23:33:00 +02:00
StringConstructor.cpp LibJS: Move most of Interpreter into VM 2020-09-27 20:26:58 +02:00
StringConstructor.h LibJS: Simplify Cell::initialize() 2020-07-23 17:31:08 +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: Move most of Interpreter into VM 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: Clarify Object (base class) construction somewhat 2020-06-23 17:21:53 +02:00
StringObject.h LibJS+LibWeb: Add JS::Object::inherits(class_name) 2020-06-21 15:15:52 +02:00
StringOrSymbol.h LibJS: Make StringOrSymbol not leak strings 2020-08-16 20:31:05 +02:00
StringPrototype.cpp LibJS: Move most of Interpreter into VM 2020-09-27 20:26:58 +02:00
StringPrototype.h LibJS: Simplify Cell::initialize() 2020-07-23 17:31:08 +02:00
Symbol.cpp LibJS: Move well-known symbols to the VM 2020-09-22 20:10:20 +02:00
Symbol.h LibJS: Move well-known symbols to the VM 2020-09-22 20:10:20 +02:00
SymbolConstructor.cpp LibJS: Move most of Interpreter into VM 2020-09-27 20:26:58 +02:00
SymbolConstructor.h LibJS: Simplify Cell::initialize() 2020-07-23 17:31:08 +02:00
SymbolObject.cpp Meta+LibHTTP through LibWeb: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
SymbolObject.h LibJS: Move global symbol map from SymbolObject to Interpreter 2020-07-09 23:29:28 +02:00
SymbolPrototype.cpp LibJS: Move most of Interpreter into VM 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: Move most of Interpreter into VM 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: Move most of Interpreter into VM 2020-09-27 20:26:58 +02:00
Value.h LibJS: Implement spec-complient instance_of operation 2020-07-14 20:15:19 +02:00
VM.cpp LibJS: Move most of Interpreter into VM 2020-09-27 20:26:58 +02:00
VM.h LibJS: Move most of Interpreter into VM 2020-09-27 20:26:58 +02:00