1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 10:18:11 +00:00
serenity/Userland/Libraries/LibJS/Runtime
Linus Groh cf168fac50 LibJS: Implement [[Call]] and [[Construct]] internal slots properly
This patch implements:

- Spec compliant [[Call]] and [[Construct]] internal slots, as virtual
  FunctionObject::internal_{call,construct}(). These effectively replace
  the old virtual FunctionObject::{call,construct}(), but with several
  advantages:
  - Clear and consistent naming, following the object internal methods
  - Use of completions
  - internal_construct() returns an Object, and not Value! This has been
    a source of confusion for a long time, since in the spec there's
    always an Object returned but the Value return type in LibJS meant
    that this could not be fully trusted and something could screw you
    over.
  - Arguments are passed explicitly in form of a MarkedValueList,
    allowing manipulation (BoundFunction). We still put them on the
    execution context as a lot of code depends on it (VM::arguments()),
    but not from the Call() / Construct() AOs anymore, which now allows
    for bypassing them and invoking [[Call]] / [[Construct]] directly.
    Nothing but Call() / Construct() themselves do that at the moment,
    but future additions to ECMA262 or already existing web specs might.
- Spec compliant, standalone Call() and Construct() AOs: currently the
  closest we have is VM::{call,construct}(), but those try to cater to
  all the different function object subclasses at once, resulting in a
  horrible mess and calling AOs with functions they should never be
  called with; most prominently PrepareForOrdinaryCall and
  OrdinaryCallBindThis, which are only for ECMAScriptFunctionObject.

As a result this also contains an implicit optimization: we no longer
need to create a new function environment for NativeFunctions - which,
worth mentioning, is what started this whole crusade in the first place
:^)
2021-10-09 14:29:20 +01:00
..
Intl LibJS: Convert has_property() to ThrowCompletionOr 2021-10-03 20:14:03 +01:00
Temporal LibJS: Use round_number_to_increment(double) in round_time() 2021-10-07 13:00:24 +01:00
AbstractOperations.cpp LibJS: Implement [[Call]] and [[Construct]] internal slots properly 2021-10-09 14:29:20 +01:00
AbstractOperations.h LibJS: Implement [[Call]] and [[Construct]] internal slots properly 2021-10-09 14:29:20 +01:00
Accessor.h LibJS: Convert Value::invoke and VM::call to ThrowCompletionOr 2021-09-23 23:59:13 +03:00
AggregateError.cpp LibJS: Make AggregateError inherit from Error 2021-06-23 13:59:17 +01:00
AggregateError.h LibJS: Make AggregateError inherit from Error 2021-06-23 13:59:17 +01:00
AggregateErrorConstructor.cpp LibJS: Convert define_property_or_throw() to ThrowCompletionOr 2021-10-03 20:14:03 +01:00
AggregateErrorConstructor.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
AggregateErrorPrototype.cpp LibJS: Add define_direct_property and remove the define_property helper 2021-07-06 14:20:30 +01:00
AggregateErrorPrototype.h LibJS: Implement AggregateError 2021-06-11 18:49:50 +01:00
ArgumentsObject.cpp LibJS: Convert has_own_property() to ThrowCompletionOr 2021-10-03 20:14:03 +01:00
ArgumentsObject.h LibJS: Convert internal_delete() to ThrowCompletionOr 2021-09-29 23:49:53 +01:00
Array.cpp LibJS: Convert create_data_property_or_throw() to ThrowCompletionOr 2021-10-03 20:14:03 +01:00
Array.h LibJS: Convert internal_own_property_keys() to ThrowCompletionOr 2021-09-29 23:49:53 +01:00
ArrayBuffer.cpp LibJS: Implement the AllocateArrayBuffer() AO 2021-10-09 12:36:28 +01:00
ArrayBuffer.h LibJS: Implement the AllocateArrayBuffer() AO 2021-10-09 12:36:28 +01:00
ArrayBufferConstructor.cpp LibJS: Use AllocateArrayBuffer where the spec tells us to 2021-10-09 12:36:28 +01:00
ArrayBufferConstructor.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
ArrayBufferPrototype.cpp LibJS: Use ThrowCompletionOr in species_constructor() 2021-09-15 23:46:53 +01:00
ArrayBufferPrototype.h LibJS: Convert ArrayBuffer.prototype to be a PrototypeObject 2021-09-12 01:40:56 +02:00
ArrayConstructor.cpp LibJS: Convert create_data_property_or_throw() to ThrowCompletionOr 2021-10-03 20:14:03 +01:00
ArrayConstructor.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
ArrayIterator.cpp LibJS: Consistently make prototype the last argument in Object ctors 2021-06-20 12:12:39 +02:00
ArrayIterator.h LibJS: Consistently make prototype the last argument in Object ctors 2021-06-20 12:12:39 +02:00
ArrayIteratorPrototype.cpp LibJS: Convert Object::get() to ThrowCompletionOr 2021-10-03 20:14:03 +01:00
ArrayIteratorPrototype.h LibJS: Convert ArrayIterator.prototype to be a PrototypeObject 2021-09-12 01:40:56 +02:00
ArrayPrototype.cpp LibJS: Convert has_property() to ThrowCompletionOr 2021-10-03 20:14:03 +01:00
ArrayPrototype.h LibJS: Implement proposed Array.prototype.findLast{,Index} 2021-08-06 16:17:25 +01:00
AtomicsObject.cpp LibJS: Convert atomic_compare_exchange_impl() to ThrowCompletionOr 2021-10-04 09:52:15 +01:00
AtomicsObject.h LibJS: Implement Atomics.isLockFree 2021-07-14 22:13:15 +01:00
BigInt.cpp LibJS: Add a js_bigint(VM&, ...) overload and use it 2021-08-03 00:14:48 +01:00
BigInt.h LibJS: Add a js_bigint(VM&, ...) overload and use it 2021-08-03 00:14:48 +01:00
BigIntConstructor.cpp LibJS: Reorder and add missing name & length properties to Built-ins 2021-07-08 01:45:15 +01:00
BigIntConstructor.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
BigIntObject.cpp LibJS+LibWeb+Spreadsheet: Upcall visit_edges() via Base typedef 2021-09-11 14:10:11 +02:00
BigIntObject.h Everywhere: Use linusg@serenityos.org for my copyright headers 2021-04-22 22:51:19 +02:00
BigIntPrototype.cpp LibJS: Use ErrorType::NotAnObjectOfType instead of NotA 2021-09-12 00:16:39 +02:00
BigIntPrototype.h Everywhere: Use linusg@serenityos.org for my copyright headers 2021-04-22 22:51:19 +02:00
BooleanConstructor.cpp LibJS: Convert ordinary_create_from_constructor<T> to ThrowCompletionOr 2021-09-16 13:53:37 +01:00
BooleanConstructor.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
BooleanObject.cpp Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
BooleanObject.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
BooleanPrototype.cpp LibJS: Use ErrorType::NotAnObjectOfType instead of NotA 2021-09-12 00:16:39 +02:00
BooleanPrototype.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
BoundFunction.cpp LibJS: Implement [[Call]] and [[Construct]] internal slots properly 2021-10-09 14:29:20 +01:00
BoundFunction.h LibJS: Implement [[Call]] and [[Construct]] internal slots properly 2021-10-09 14:29:20 +01:00
CommonPropertyNames.h LibJS: Add missing headers 2021-10-06 23:52:40 +01:00
Completion.h LibJS: Add Completion::is_abrupt() 2021-10-09 14:29:20 +01:00
ConsoleObject.cpp LibJS: Remove the default length & attributes from define_native_* 2021-07-06 14:20:30 +01:00
ConsoleObject.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
DataView.cpp LibJS+LibWeb+Spreadsheet: Upcall visit_edges() via Base typedef 2021-09-11 14:10:11 +02:00
DataView.h LibJS: Consistently make prototype the last argument in Object ctors 2021-06-20 12:12:39 +02:00
DataViewConstructor.cpp LibJS: Convert ordinary_create_from_constructor<T> to ThrowCompletionOr 2021-09-16 13:53:37 +01:00
DataViewConstructor.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
DataViewPrototype.cpp LibJS: Convert DataView.prototype to be a PrototypeObject 2021-09-12 01:40:56 +02:00
DataViewPrototype.h LibJS: Convert DataView.prototype to be a PrototypeObject 2021-09-12 01:40:56 +02:00
Date.cpp LibJS: Add type range checks to the Date make_day AO 2021-08-19 19:15:00 +01:00
Date.h LibJS: Parse date strings like "Wed Apr 17 23:08:53 +0000 2019" 2021-09-26 23:42:27 +02:00
DateConstructor.cpp LibJS: Parse date strings like "Wed Apr 17 23:08:53 +0000 2019" 2021-09-26 23:42:27 +02:00
DateConstructor.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
DatePrototype.cpp LibJS: Convert Object::get() to ThrowCompletionOr 2021-10-03 20:14:03 +01:00
DatePrototype.h LibJS: Convert Date.prototype to be a PrototypeObject 2021-09-12 01:40:56 +02:00
DeclarativeEnvironment.cpp LibJS: Taint variable environment chain after non-strict direct eval() 2021-10-07 11:53:18 +02:00
DeclarativeEnvironment.h LibJS: Add direct (indexed) binding accessors to DeclarativeEnvironment 2021-10-07 00:23:36 +02:00
ECMAScriptFunctionObject.cpp LibJS: Implement [[Call]] and [[Construct]] internal slots properly 2021-10-09 14:29:20 +01:00
ECMAScriptFunctionObject.h LibJS: Implement [[Call]] and [[Construct]] internal slots properly 2021-10-09 14:29:20 +01:00
Environment.cpp LibJS: Taint variable environment chain after non-strict direct eval() 2021-10-07 11:53:18 +02:00
Environment.h LibJS: Taint variable environment chain after non-strict direct eval() 2021-10-07 11:53:18 +02:00
EnvironmentCoordinate.h LibJS: Fast non-local variable access :^) 2021-10-07 11:53:18 +02:00
Error.cpp LibJS: Convert has_property() to ThrowCompletionOr 2021-10-03 20:14:03 +01:00
Error.h LibJS: Convert install_error_cause() to ThrowCompletionOr 2021-10-03 20:14:03 +01:00
ErrorConstructor.cpp LibJS: Convert create_non_enum_data_p_or_throw() to ThrowCompletionOr 2021-10-03 20:14:03 +01:00
ErrorConstructor.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
ErrorPrototype.cpp LibJS: Convert Object::get() to ThrowCompletionOr 2021-10-03 20:14:03 +01:00
ErrorPrototype.h LibJS: Rename JS_ENUMERATE_{ERROR_SUBCLASSES => NATIVE_ERRORS} 2021-06-11 18:49:50 +01:00
ErrorTypes.cpp Userland: Use mattco@serenityos.org for my copyright headers 2021-04-23 08:24:53 +02:00
ErrorTypes.h LibJS: Make scoping follow the spec 2021-09-30 08:16:32 +01:00
Exception.cpp LibJS: Rename CallFrame => ExecutionContext 2021-06-24 19:28:00 +02:00
Exception.h LibJS: Avoid allocations in the Exception constructor 2021-06-03 14:47:15 +01:00
ExecutionContext.h LibJS: Remove unused ExecutionContext::arguments_object 2021-10-03 23:58:21 +02:00
FinalizationRegistry.cpp LibJS: Make WeakContainer pruning do less work 2021-10-05 18:52:00 +02:00
FinalizationRegistry.h LibJS: Make WeakContainer pruning do less work 2021-10-05 18:52:00 +02:00
FinalizationRegistryConstructor.cpp LibJS: Convert ordinary_create_from_constructor<T> to ThrowCompletionOr 2021-09-16 13:53:37 +01:00
FinalizationRegistryConstructor.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
FinalizationRegistryPrototype.cpp LibJS: Convert FinalizationRegistry.prototype to be a PrototypeObject 2021-09-12 01:40:56 +02:00
FinalizationRegistryPrototype.h LibJS: Convert FinalizationRegistry.prototype to be a PrototypeObject 2021-09-12 01:40:56 +02:00
FunctionConstructor.cpp LibJS: Change Interpreter::create_with_existing_{global_object => realm} 2021-09-12 15:18:25 +02:00
FunctionConstructor.h LibJS: Add missing headers 2021-10-06 23:52:40 +01:00
FunctionEnvironment.cpp LibJS: Make scoping follow the spec 2021-09-30 08:16:32 +01:00
FunctionEnvironment.h LibJS: Make scoping follow the spec 2021-09-30 08:16:32 +01:00
FunctionObject.cpp LibJS: Convert Object::get() to ThrowCompletionOr 2021-10-03 20:14:03 +01:00
FunctionObject.h LibJS: Implement [[Call]] and [[Construct]] internal slots properly 2021-10-09 14:29:20 +01:00
FunctionPrototype.cpp LibJS: Rename ECMAScriptFunctionObject members to match spec names 2021-09-25 17:51:30 +02:00
FunctionPrototype.h Everywhere: Use linusg@serenityos.org for my copyright headers 2021-04-22 22:51:19 +02:00
GeneratorFunctionConstructor.cpp LibJS: Add an optimization to avoid needless arguments object creation 2021-10-05 10:15:14 +01:00
GeneratorFunctionConstructor.h LibJS: Add missing has_constructor override to Generator Functions 2021-07-13 20:40:57 +02:00
GeneratorFunctionPrototype.cpp LibJS: Add define_direct_property and remove the define_property helper 2021-07-06 14:20:30 +01:00
GeneratorFunctionPrototype.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
GeneratorObject.cpp LibJS: Convert Object::get() to ThrowCompletionOr 2021-10-03 20:14:03 +01:00
GeneratorObject.h LibJS: Rename OrdinaryFunctionObject to ECMAScriptFunctionObject 2021-09-25 17:51:30 +02:00
GeneratorObjectPrototype.cpp LibJS: Convert GeneratorObject.prototype to be a PrototypeObject 2021-09-12 01:40:56 +02:00
GeneratorObjectPrototype.h LibJS: Convert GeneratorObject.prototype to be a PrototypeObject 2021-09-12 01:40:56 +02:00
GlobalEnvironment.cpp LibJS: Make Environment::has_binding() optionally return binding index 2021-10-07 00:23:36 +02:00
GlobalEnvironment.h LibJS: Make Environment::has_binding() optionally return binding index 2021-10-07 00:23:36 +02:00
GlobalObject.cpp LibJS: Use MUST() where applicable 2021-10-03 20:14:03 +01:00
GlobalObject.h LibJS: Remove transition avoidance & start caching prototype transitions 2021-10-01 02:59:29 +02:00
IndexedProperties.cpp LibJS: Only do a single property lookup in internal_get_own_property() 2021-10-05 15:15:29 +02:00
IndexedProperties.h LibJS: Stop using a native property for Array lengths 2021-07-07 10:14:44 +01:00
IteratorOperations.cpp LibJS: Convert create_data_property_or_throw() to ThrowCompletionOr 2021-10-03 20:14:03 +01:00
IteratorOperations.h LibJS: Change create_iterator_result_object's return type to Object* 2021-09-28 16:51:27 +02:00
IteratorPrototype.cpp LibJS: Change PropertyName(Symbol*) => PropertyName(Symbol&) 2021-06-25 22:01:23 +01:00
IteratorPrototype.h Userland: Use mattco@serenityos.org for my copyright headers 2021-04-23 08:24:53 +02:00
JobCallback.h LibJS: Convert Value::invoke and VM::call to ThrowCompletionOr 2021-09-23 23:59:13 +03:00
JSONObject.cpp LibJS: Convert enumerable_own_property_names() to ThrowCompletionOr 2021-10-03 20:14:03 +01:00
JSONObject.h js: Add a simple loadJSON(path) built-in to load JSON from a file 2021-09-16 21:49:50 +02:00
Map.cpp LibJS+LibWeb+Spreadsheet: Upcall visit_edges() via Base typedef 2021-09-11 14:10:11 +02:00
Map.h LibJS: Use OrderedHashMap instead of HashMap in the Map built-in 2021-06-15 23:51:20 +01:00
MapConstructor.cpp LibJS: Convert Object::get() to ThrowCompletionOr 2021-10-03 20:14:03 +01:00
MapConstructor.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
MapIterator.cpp LibJS: Consistently make prototype the last argument in Object ctors 2021-06-20 12:12:39 +02:00
MapIterator.h LibJS: Consistently make prototype the last argument in Object ctors 2021-06-20 12:12:39 +02:00
MapIteratorPrototype.cpp LibJS: Convert MapIterator.prototype to be a PrototypeObject 2021-09-12 01:40:56 +02:00
MapIteratorPrototype.h LibJS: Convert MapIterator.prototype to be a PrototypeObject 2021-09-12 01:40:56 +02:00
MapPrototype.cpp LibJS: Convert Object::get() to ThrowCompletionOr 2021-10-03 20:14:03 +01:00
MapPrototype.h LibJS: Remove leftover typed_this() declarations 2021-09-13 19:07:26 +01:00
MarkedValueList.cpp Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
MarkedValueList.h AK+Everywhere: Reduce the number of template parameters of IntrusiveList 2021-09-10 18:05:46 +03:00
MathObject.cpp LibJS: Always use AK::get_random() in Math.random() 2021-08-30 18:35:36 +02:00
MathObject.h LibJS: Add Math.imul() 2021-06-05 14:56:58 +01:00
NativeFunction.cpp LibJS: Implement [[Call]] and [[Construct]] internal slots properly 2021-10-09 14:29:20 +01:00
NativeFunction.h LibJS: Implement [[Call]] and [[Construct]] internal slots properly 2021-10-09 14:29:20 +01:00
NumberConstructor.cpp LibJS: Convert Object::get() to ThrowCompletionOr 2021-10-03 20:14:03 +01:00
NumberConstructor.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
NumberObject.cpp Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
NumberObject.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
NumberPrototype.cpp LibJS: Use ErrorType::NotAnObjectOfType instead of NotA 2021-09-12 00:16:39 +02:00
NumberPrototype.h LibJS: Add the Number.prototype.toFixed method 2021-06-19 16:13:59 +01:00
Object.cpp LibJS: Only do a single property lookup in internal_get_own_property() 2021-10-05 15:15:29 +02:00
Object.h LibJS: Convert ordinary_set_with_own_descriptor() to ThrowCompletionOr 2021-10-04 09:52:15 +01:00
ObjectConstructor.cpp LibJS: Convert to_property_descriptor() to ThrowCompletionOr 2021-10-04 09:52:15 +01:00
ObjectConstructor.h LibJS: Implement Object.getOwnPropertyDescriptors() 2021-07-06 18:41:15 +01:00
ObjectEnvironment.cpp LibJS: Make Environment::has_binding() optionally return binding index 2021-10-07 00:23:36 +02:00
ObjectEnvironment.h LibJS: Make Environment::has_binding() optionally return binding index 2021-10-07 00:23:36 +02:00
ObjectPrototype.cpp LibJS: Convert set_immutable_prototype() to ThrowCompletionOr 2021-10-04 09:52:15 +01:00
ObjectPrototype.h LibJS: Convert internal_set_prototype_of() to ThrowCompletionOr 2021-09-29 23:49:53 +01:00
PrimitiveString.cpp LibJS: Keep track of PrimitiveStrings and share them 2021-10-02 16:39:28 +02:00
PrimitiveString.h LibJS: Reduce UTF-8 to UTF-16 transcoding when only UTF-16 is wanted 2021-08-10 23:07:50 +02:00
Promise.cpp LibJS: Convert Object::get() to ThrowCompletionOr 2021-10-03 20:14:03 +01:00
Promise.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
PromiseConstructor.cpp LibJS: Convert define_property_or_throw() to ThrowCompletionOr 2021-10-03 20:14:03 +01:00
PromiseConstructor.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
PromiseJobs.cpp LibJS: Convert Value::invoke and VM::call to ThrowCompletionOr 2021-09-23 23:59:13 +03:00
PromiseJobs.h Everywhere: Use linusg@serenityos.org for my copyright headers 2021-04-22 22:51:19 +02:00
PromisePrototype.cpp LibJS: Convert Value::invoke and VM::call to ThrowCompletionOr 2021-09-23 23:59:13 +03:00
PromisePrototype.h LibJS: Convert Promise.prototype to be a PrototypeObject 2021-09-12 01:40:56 +02:00
PromiseReaction.cpp LibJS: Set the function names for the resolve, reject, and executor 2021-08-23 00:01:46 +01:00
PromiseReaction.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
PromiseResolvingElementFunctions.cpp LibJS: Convert define_property_or_throw() to ThrowCompletionOr 2021-10-03 20:14:03 +01:00
PromiseResolvingElementFunctions.h LibJS: Specify right base for PromiseResolvingElementFunction subclasses 2021-09-11 22:26:53 +02:00
PromiseResolvingFunction.cpp LibJS: Add define_direct_property and remove the define_property helper 2021-07-06 14:20:30 +01:00
PromiseResolvingFunction.h LibJS: Stop qualifying AK::Function 2021-06-27 22:40:49 +02:00
PropertyAttributes.h LibJS: Add missing headers 2021-10-06 23:52:40 +01:00
PropertyDescriptor.cpp LibJS: Convert to_property_descriptor() to ThrowCompletionOr 2021-10-04 09:52:15 +01:00
PropertyDescriptor.h LibJS: Convert to_property_descriptor() to ThrowCompletionOr 2021-10-04 09:52:15 +01:00
PropertyName.h LibJS: Use move semantics more when creating Reference objects 2021-09-11 20:38:45 +02:00
PrototypeObject.h LibJS: Create a class to provide common methods for object prototypes 2021-09-12 01:40:56 +02:00
ProxyConstructor.cpp LibJS: Convert create_data_property_or_throw() to ThrowCompletionOr 2021-10-03 20:14:03 +01:00
ProxyConstructor.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
ProxyObject.cpp LibJS: Implement [[Call]] and [[Construct]] internal slots properly 2021-10-09 14:29:20 +01:00
ProxyObject.h LibJS: Implement [[Call]] and [[Construct]] internal slots properly 2021-10-09 14:29:20 +01:00
Realm.cpp LibJS: Allocate a Realm next to GlobalObject in Interpreter::create() 2021-09-12 11:10:20 +01:00
Realm.h LibJS: Allocate a Realm next to GlobalObject in Interpreter::create() 2021-09-12 11:10:20 +01:00
Reference.cpp LibJS: Partially revert 12b283f 2021-10-08 19:56:02 +03:30
Reference.h LibJS: Partially revert 12b283f 2021-10-08 19:56:02 +03:30
ReflectObject.cpp LibJS: Convert to_property_descriptor() to ThrowCompletionOr 2021-10-04 09:52:15 +01:00
ReflectObject.h Everywhere: Use linusg@serenityos.org for my copyright headers 2021-04-22 22:51:19 +02:00
RegExpConstructor.cpp LibJS: Convert Object::get() to ThrowCompletionOr 2021-10-03 20:14:03 +01:00
RegExpConstructor.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
RegExpObject.cpp LibJS: Make escape_regexp_pattern() a RegExpObject member function 2021-10-05 18:35:49 +01:00
RegExpObject.h LibJS: Make escape_regexp_pattern() a RegExpObject member function 2021-10-05 18:35:49 +01:00
RegExpPrototype.cpp LibJS: Make escape_regexp_pattern() a RegExpObject member function 2021-10-05 18:35:49 +01:00
RegExpPrototype.h LibJS: Convert RegExp.prototype to be a PrototypeObject 2021-09-12 01:40:56 +02:00
RegExpStringIterator.cpp LibJS+LibWeb+Spreadsheet: Upcall visit_edges() via Base typedef 2021-09-11 14:10:11 +02:00
RegExpStringIterator.h LibJS: Reduce copying of string data in RegExp.prototype 2021-08-10 23:07:50 +02:00
RegExpStringIteratorPrototype.cpp LibJS: Convert Object::set() to ThrowCompletionOr 2021-10-03 20:14:03 +01:00
RegExpStringIteratorPrototype.h LibJS: Convert RegExpStringIterator.prototype to be a PrototypeObject 2021-09-12 01:40:56 +02:00
Set.cpp LibJS+LibWeb+Spreadsheet: Upcall visit_edges() via Base typedef 2021-09-11 14:10:11 +02:00
Set.h LibJS: Use OrderedHashTable instead of HashTable in the Set built-in 2021-06-15 23:51:20 +01:00
SetConstructor.cpp LibJS: Convert Object::get() to ThrowCompletionOr 2021-10-03 20:14:03 +01:00
SetConstructor.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
SetIterator.cpp LibJS: Consistently make prototype the last argument in Object ctors 2021-06-20 12:12:39 +02:00
SetIterator.h LibJS: Consistently make prototype the last argument in Object ctors 2021-06-20 12:12:39 +02:00
SetIteratorPrototype.cpp LibJS: Convert SetIterator.prototype to be a PrototypeObject 2021-09-12 01:40:56 +02:00
SetIteratorPrototype.h LibJS: Convert SetIterator.prototype to be a PrototypeObject 2021-09-12 01:40:56 +02:00
SetPrototype.cpp LibJS: Convert Object::get() to ThrowCompletionOr 2021-10-03 20:14:03 +01:00
SetPrototype.h LibJS: Remove leftover typed_this() declarations 2021-09-13 19:07:26 +01:00
Shape.cpp LibJS: Put zombie cell tracking code behind a compile-time flag 2021-10-02 16:39:28 +02:00
Shape.h LibJS: Put zombie cell tracking code behind a compile-time flag 2021-10-02 16:39:28 +02:00
StringConstructor.cpp LibJS: Convert Object::get() to ThrowCompletionOr 2021-10-03 20:14:03 +01:00
StringConstructor.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
StringIterator.cpp LibJS: Consistently make prototype the last argument in Object ctors 2021-06-20 12:12:39 +02:00
StringIterator.h LibJS: Consistently make prototype the last argument in Object ctors 2021-06-20 12:12:39 +02:00
StringIteratorPrototype.cpp LibJS: Convert StringIterator.prototype to be a PrototypeObject 2021-09-12 01:40:56 +02:00
StringIteratorPrototype.h LibJS: Convert StringIterator.prototype to be a PrototypeObject 2021-09-12 01:40:56 +02:00
StringObject.cpp LibJS: Use MUST() where applicable 2021-10-03 20:14:03 +01:00
StringObject.h LibJS: Convert internal_own_property_keys() to ThrowCompletionOr 2021-09-29 23:49:53 +01:00
StringOrSymbol.h LibJS: Make StringOrSymbol always be FlyString in the string case 2021-06-13 19:11:29 +02:00
StringPrototype.cpp LibJS: Convert create_data_property_or_throw() to ThrowCompletionOr 2021-10-03 20:14:03 +01:00
StringPrototype.h LibJS: Implement non-ECMA-402 String.prototype.toLocale{Lower,Upper}Case 2021-07-27 22:35:24 +01:00
Symbol.cpp LibJS: Store and return undefined Symbol description 2021-06-15 18:31:52 +01:00
Symbol.h LibJS: Store and return undefined Symbol description 2021-06-15 18:31:52 +01:00
SymbolConstructor.cpp LibJS: Reorder and add missing name & length properties to Built-ins 2021-07-08 01:45:15 +01:00
SymbolConstructor.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
SymbolObject.cpp LibJS+LibWeb+Spreadsheet: Upcall visit_edges() via Base typedef 2021-09-11 14:10:11 +02:00
SymbolObject.h LibJS: Store and return undefined Symbol description 2021-06-15 18:31:52 +01:00
SymbolPrototype.cpp LibJS: Use ErrorType::NotAnObjectOfType instead of NotA 2021-09-12 00:16:39 +02:00
SymbolPrototype.h LibJS: Implement String.prototype[@@toPrimitive]() 2021-06-06 19:34:43 +02:00
TemporaryClearException.h LibJS: Use linusg@serenityos.org for my new copyright headers, too 2021-04-24 20:16:31 +02:00
TypedArray.cpp LibJS: Use AllocateArrayBuffer where the spec tells us to 2021-10-09 12:36:28 +01:00
TypedArray.h LibJS: Convert typed_array_create() to ThrowCompletionOr 2021-10-04 09:52:15 +01:00
TypedArrayConstructor.cpp LibJS: Convert typed_array_create() to ThrowCompletionOr 2021-10-04 09:52:15 +01:00
TypedArrayConstructor.h LibJS: Add the TypedArray.from() method 2021-07-05 00:27:03 +01:00
TypedArrayPrototype.cpp LibJS: Convert typed_array_create() to ThrowCompletionOr 2021-10-04 09:52:15 +01:00
TypedArrayPrototype.h LibJS: Implement proposed TypedArray.prototype.findLast{,Index} 2021-08-06 16:17:25 +01:00
Utf16String.cpp LibJS+AK: Use Vector<u16, 1> for UTF-16 string storage 2021-10-02 17:39:38 +02:00
Utf16String.h LibJS+AK: Use Vector<u16, 1> for UTF-16 string storage 2021-10-02 17:39:38 +02:00
Value.cpp LibJS: Take advantage of Value::Type::Int32 in a bunch of functions 2021-10-07 19:27:30 +02:00
Value.h LibJS: Take advantage of Value::Type::Int32 in a bunch of functions 2021-10-07 19:27:30 +02:00
VM.cpp LibJS: Implement [[Call]] and [[Construct]] internal slots properly 2021-10-09 14:29:20 +01:00
VM.h LibJS: Implement [[Call]] and [[Construct]] internal slots properly 2021-10-09 14:29:20 +01:00
WeakContainer.cpp LibJS: Use IntrusiveList for keeping track of WeakContainers 2021-07-21 20:17:55 +02:00
WeakContainer.h LibJS: Add missing headers 2021-10-06 23:52:40 +01:00
WeakMap.cpp LibJS: Make WeakContainer pruning do less work 2021-10-05 18:52:00 +02:00
WeakMap.h LibJS: Make WeakContainer pruning do less work 2021-10-05 18:52:00 +02:00
WeakMapConstructor.cpp LibJS: Convert Object::get() to ThrowCompletionOr 2021-10-03 20:14:03 +01:00
WeakMapConstructor.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
WeakMapPrototype.cpp LibJS: Convert WeakMap.prototype to be a PrototypeObject 2021-09-12 01:40:56 +02:00
WeakMapPrototype.h LibJS: Remove leftover typed_this() declarations 2021-09-13 19:07:26 +01:00
WeakRef.cpp LibJS: Make WeakContainer pruning do less work 2021-10-05 18:52:00 +02:00
WeakRef.h LibJS: Make WeakContainer pruning do less work 2021-10-05 18:52:00 +02:00
WeakRefConstructor.cpp LibJS: Convert ordinary_create_from_constructor<T> to ThrowCompletionOr 2021-09-16 13:53:37 +01:00
WeakRefConstructor.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
WeakRefPrototype.cpp LibJS: Convert WeakRef.prototype to be a PrototypeObject 2021-09-12 01:40:56 +02:00
WeakRefPrototype.h LibJS: Convert WeakRef.prototype to be a PrototypeObject 2021-09-12 01:40:56 +02:00
WeakSet.cpp LibJS: Make WeakContainer pruning do less work 2021-10-05 18:52:00 +02:00
WeakSet.h LibJS: Make WeakContainer pruning do less work 2021-10-05 18:52:00 +02:00
WeakSetConstructor.cpp LibJS: Convert Object::get() to ThrowCompletionOr 2021-10-03 20:14:03 +01:00
WeakSetConstructor.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
WeakSetPrototype.cpp LibJS: Convert WeakSet.prototype to be a PrototypeObject 2021-09-12 01:40:56 +02:00
WeakSetPrototype.h LibJS: Remove leftover typed_this() declarations 2021-09-13 19:07:26 +01:00