1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-20 13:35:07 +00:00
serenity/Libraries/LibJS/Runtime
Andreas Kling f7a1696087 LibJS: Add MarkedValueList and use it for argument passing
A MarkedValueList is basically a Vector<JS::Value> that registers with
the Heap and makes sure that the stored values don't get GC'd.

Before this change, we were unsafely keeping Vector<JS::Value> in some
places, which is out-of-reach for the live reference finding logic
since Vector puts its elements on the heap by default.

We now pass all the JavaScript tests even when running with "js -g",
which does a GC on every heap allocation.
2020-04-19 17:34:33 +02:00
..
Array.cpp LibJS: Move builtin prototypes to the global object 2020-04-18 13:24:45 +02:00
Array.h LibJS: Make Array constructor take its prototype 2020-04-18 10:28:22 +02:00
ArrayConstructor.cpp LibJS: Move builtin prototypes to the global object 2020-04-18 13:24:45 +02:00
ArrayConstructor.h LibJS: Add basic Array constructor 2020-04-04 22:28:21 +02:00
ArrayPrototype.cpp LibJS: Add MarkedValueList and use it for argument passing 2020-04-19 17:34:33 +02:00
ArrayPrototype.h LibJS: Add Array.prototype.slice 2020-04-19 02:09:06 +02:00
BooleanConstructor.cpp LibJS: Move builtin prototypes to the global object 2020-04-18 13:24:45 +02:00
BooleanConstructor.h LibJS: Reformat BooleanConstructor.{cpp,h} 2020-04-07 17:25:50 +02:00
BooleanObject.cpp LibJS: Move builtin prototypes to the global object 2020-04-18 13:24:45 +02:00
BooleanObject.h LibJS: Pass prototype to BooleanObject constructor 2020-04-18 10:28:22 +02:00
BooleanPrototype.cpp LibJS: Move builtin prototypes to the global object 2020-04-18 13:24:45 +02:00
BooleanPrototype.h LibJS: Boolean, Number and String prototypes should have values too 2020-04-10 13:09:35 +02:00
Cell.cpp LibJS: Allow cells to mark null pointers 2020-04-16 16:10:38 +02:00
Cell.h LibJS: Allow cells to mark null pointers 2020-04-16 16:10:38 +02:00
ConsoleObject.cpp LibJS: Move builtin prototypes to the global object 2020-04-18 13:24:45 +02:00
ConsoleObject.h LibJS: Add console.{debug,info,warn,error}() 2020-04-12 18:42:42 +02:00
Date.cpp LibJS: Move builtin prototypes to the global object 2020-04-18 13:24:45 +02:00
Date.h LibJS: Pass prototype to Date constructor 2020-04-18 10:28:22 +02:00
DateConstructor.cpp LibJS: Move builtin prototypes to the global object 2020-04-18 13:24:45 +02:00
DateConstructor.h LibJS: Implement constructor/non-constructor function calls 2020-04-01 20:18:36 +02:00
DatePrototype.cpp LibJS: Move builtin prototypes to the global object 2020-04-18 13:24:45 +02:00
DatePrototype.h LibJS: Implement Date.prototype.to{Date,Time}String() 2020-03-30 21:43:35 +02:00
Error.cpp LibJS: Move builtin prototypes to the global object 2020-04-18 13:24:45 +02:00
Error.h LibJS: Pass prototype to Error constructors 2020-04-18 10:28:22 +02:00
ErrorConstructor.cpp LibJS: Move builtin prototypes to the global object 2020-04-18 13:24:45 +02:00
ErrorConstructor.h LibJS: Use enumerator macros for boilerplate code around native types 2020-04-10 14:06:52 +02:00
ErrorPrototype.cpp LibJS: Move builtin prototypes to the global object 2020-04-18 13:24:45 +02:00
ErrorPrototype.h LibJS: Implement Error.prototype.name setter (#1776) 2020-04-13 11:19:53 +02:00
Exception.cpp LibJS: Implement "throw" 2020-03-24 22:21:58 +01:00
Exception.h LibJS: Implement "throw" 2020-03-24 22:21:58 +01:00
Function.cpp LibJS+LibWeb: Pass prototype to Object constructor 2020-04-18 11:00:55 +02:00
Function.h LibJS: Pass prototype to Function constructors 2020-04-18 10:28:22 +02:00
FunctionConstructor.cpp LibJS: Move builtin prototypes to the global object 2020-04-18 13:24:45 +02:00
FunctionConstructor.h LibJS: Add Function() and Function.prototype 2020-04-04 15:58:49 +02:00
FunctionPrototype.cpp LibJS: Add MarkedValueList and use it for argument passing 2020-04-19 17:34:33 +02:00
FunctionPrototype.h LibJS: Pass prototype to Function constructors 2020-04-18 10:28:22 +02:00
GlobalObject.cpp LibJS: Move the empty object shape from Interpreter to GlobalObject 2020-04-18 13:59:20 +02:00
GlobalObject.h LibJS: Move the empty object shape from Interpreter to GlobalObject 2020-04-18 13:59:20 +02:00
LexicalEnvironment.cpp LibJS: Allow cells to mark null pointers 2020-04-16 16:10:38 +02:00
LexicalEnvironment.h LibJS: Introduce LexicalEnvironment 2020-04-15 22:07:20 +02:00
MarkedValueList.cpp LibJS: Add MarkedValueList and use it for argument passing 2020-04-19 17:34:33 +02:00
MarkedValueList.h LibJS: Add MarkedValueList and use it for argument passing 2020-04-19 17:34:33 +02:00
MathObject.cpp LibJS: Move builtin prototypes to the global object 2020-04-18 13:24:45 +02:00
MathObject.h LibJS: Add Math.{cos,sin,tan}() 2020-04-06 10:58:16 +02:00
NativeFunction.cpp LibJS: Move builtin prototypes to the global object 2020-04-18 13:24:45 +02:00
NativeFunction.h LibJS: Pass prototype to Function constructors 2020-04-18 10:28:22 +02:00
NativeProperty.cpp LibJS+LibWeb: Pass prototype to Object constructor 2020-04-18 11:00:55 +02:00
NativeProperty.h LibJS+LibWeb: Move native properties to separate getters/setters 2020-03-29 00:37:33 +01:00
NumberConstructor.cpp LibJS: Move builtin prototypes to the global object 2020-04-18 13:24:45 +02:00
NumberConstructor.h LibJS: Add Number.isSafeInteger() 2020-04-07 21:28:43 +02:00
NumberObject.cpp LibJS: Move builtin prototypes to the global object 2020-04-18 13:24:45 +02:00
NumberObject.h LibJS: Pass prototype to NumberObject constructor 2020-04-18 10:28:22 +02:00
NumberPrototype.cpp LibJS: Move builtin prototypes to the global object 2020-04-18 13:24:45 +02:00
NumberPrototype.h LibJS: Boolean, Number and String prototypes should have values too 2020-04-10 13:09:35 +02:00
Object.cpp LibJS: Move the empty object shape from Interpreter to GlobalObject 2020-04-18 13:59:20 +02:00
Object.h LibJS+LibWeb: Pass prototype to Object constructor 2020-04-18 11:00:55 +02:00
ObjectConstructor.cpp LibJS: Move builtin prototypes to the global object 2020-04-18 13:24:45 +02:00
ObjectConstructor.h LibJS: Add Object.defineProperty() and start caring about attributes 2020-04-10 00:36:06 +02:00
ObjectPrototype.cpp LibJS+LibWeb: Pass prototype to Object constructor 2020-04-18 11:00:55 +02:00
ObjectPrototype.h LibJS: Pass prototype to Function constructors 2020-04-18 10:28:22 +02:00
PrimitiveString.cpp LibJS: Add js_string(Interpreter&, String) 2020-04-04 12:58:05 +02:00
PrimitiveString.h LibJS: Add js_string(Interpreter&, String) 2020-04-04 12:58:05 +02:00
PropertyName.h LibJS: Support array holes, encoded as empty JS::Value 2020-04-06 20:27:44 +02:00
ScriptFunction.cpp LibJS: Move builtin prototypes to the global object 2020-04-18 13:24:45 +02:00
ScriptFunction.h LibJS: Pass prototype to Function constructors 2020-04-18 10:28:22 +02:00
Shape.cpp LibJS: Allow cells to mark null pointers 2020-04-16 16:10:38 +02:00
Shape.h LibJS: Key shape transitions on both property name and attributes 2020-04-10 16:33:44 +02:00
StringConstructor.cpp LibJS: Move builtin prototypes to the global object 2020-04-18 13:24:45 +02:00
StringConstructor.h LibJS: Add String constructor :^) 2020-04-10 14:14:02 +02:00
StringObject.cpp LibJS: Move builtin prototypes to the global object 2020-04-18 13:24:45 +02:00
StringObject.h LibJS: Pass prototype to StringObject constructor 2020-04-18 10:28:22 +02:00
StringPrototype.cpp LibJS: Use AK::String::index_of() for StringPrototype::index_of() 2020-04-18 22:24:22 +02:00
StringPrototype.h LibJS: Add String.prototype.substring 2020-04-16 18:47:24 +02:00
Value.cpp LibJS: Pass prototype to BooleanObject constructor 2020-04-18 10:28:22 +02:00
Value.h LibJS: Make Value::m_type default to Type::Empty 2020-04-16 16:11:11 +02:00