ladybird/Userland/Libraries/LibJS/Runtime
Linus Groh 09bd5f8772 LibJS: Rewrite most of Object for spec compliance :^)
This is a huge patch, I know. In hindsight this perhaps could've been
done slightly more incremental, but I started and then fixed everything
until it worked, and here we are. I tried splitting of some completely
unrelated changes into separate commits, however. Anyway.

This is a rewrite of most of Object, and by extension large parts of
Array, Proxy, Reflect, String, TypedArray, and some other things.

What we already had worked fine for about 90% of things, but getting the
last 10% right proved to be increasingly difficult with the current code
that sort of grew organically and is only very loosely based on the
spec - this became especially obvious when we started fixing a large
number of test262 failures.

Key changes include:

- 1:1 matching function names and parameters of all object-related
  functions, to avoid ambiguity. Previously we had things like put(),
  which the spec doesn't have - as a result it wasn't always clear which
  need to be used.
- Better separation between object abstract operations and internal
  methods - the former are always the same, the latter can be overridden
  (and are therefore virtual). The internal methods (i.e. [[Foo]] in the
  spec) are now prefixed with 'internal_' for clarity - again, it was
  previously not always clear which AO a certain method represents,
  get() could've been both Get and [[Get]] (I don't know which one it
  was closer to right now).
  Note that some of the old names have been kept until all code relying
  on them is updated, but they are now simple wrappers around the
  closest matching standard abstract operation.
- Simplifications of the storage layer: functions that write values to
  storage are now prefixed with 'storage_' to make their purpose clear,
  and as they are not part of the spec they should not contain any steps
  specified by it. Much functionality is now covered by the layers above
  it and was removed (e.g. handling of accessors, attribute checks).
- PropertyAttributes has been greatly simplified, and is being replaced
  by PropertyDescriptor - a concept similar to the current
  implementation, but more aligned with the actual spec. See the commit
  message of the previous commit where it was introduced for details.
- As a bonus, and since I had to look at the spec a whole lot anyway, I
  introduced more inline comments with the exact steps from the spec -
  this makes it super easy to verify correctness.
- East-const all the things.

As a result of all of this, things are much more correct but a bit
slower now. Retaining speed wasn't a consideration at all, I have done
no profiling of the new code - there might be low hanging fruits, which
we can then harvest separately.

Special thanks to Idan for helping me with this by tracking down bugs,
updating everything outside of LibJS to work with these changes (LibWeb,
Spreadsheet, HackStudio), as well as providing countless patches to fix
regressions I introduced - there still are very few (we got it down to
5), but we also get many new passing test262 tests in return. :^)

Co-authored-by: Idan Horowitz <idan.horowitz@gmail.com>
2021-07-04 22:07:36 +01:00
..
AbstractOperations.cpp LibJS: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +01:00
AbstractOperations.h LibJS: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +01:00
Accessor.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02: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: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
AggregateErrorConstructor.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
AggregateErrorPrototype.cpp LibJS: Implement AggregateError 2021-06-11 18:49:50 +01:00
AggregateErrorPrototype.h LibJS: Implement AggregateError 2021-06-11 18:49:50 +01:00
ArgumentsObject.cpp LibJS: Add the CreateMappedArgumentsObject abstract operation 2021-06-28 16:52:20 +02:00
ArgumentsObject.h LibJS: Add the CreateMappedArgumentsObject abstract operation 2021-06-28 16:52:20 +02:00
Array.cpp LibJS: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +01:00
Array.h LibJS: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +01:00
ArrayBuffer.cpp LibWeb: Set a detach key for ArrayBuffers returned from WASM 2021-06-11 13:38:25 +01:00
ArrayBuffer.h LibJS: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +01:00
ArrayBufferConstructor.cpp LibJS: Check for DataView in ArrayBuffer.isView() 2021-07-01 09:20:00 +01:00
ArrayBufferConstructor.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
ArrayBufferPrototype.cpp LibJS: Change PropertyName(Symbol*) => PropertyName(Symbol&) 2021-06-25 22:01:23 +01:00
ArrayBufferPrototype.h Everywhere: Use linusg@serenityos.org for my copyright headers 2021-04-22 22:51:19 +02:00
ArrayConstructor.cpp LibJS: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +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: Bring ArrayCreate and ArrayConstructor closer to spec 2021-07-04 00:51:43 +01:00
ArrayIteratorPrototype.h Userland: Use mattco@serenityos.org for my copyright headers 2021-04-23 08:24:53 +02:00
ArrayPrototype.cpp LibJS: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +01:00
ArrayPrototype.h LibJS: Implement Array.prototype.copyWithin generically 2021-06-14 09:57:06 +01:00
BigInt.cpp Everywhere: Use linusg@serenityos.org for my copyright headers 2021-04-22 22:51:19 +02:00
BigInt.h LibCrypto: Replace from_base{2,8,10,16}() & to_base10 with from_base(N) 2021-06-29 16:55:54 +01:00
BigIntConstructor.cpp LibJS: Accept FlyStrings in the NativeFunction constructors 2021-06-28 08:55:14 +01:00
BigIntConstructor.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
BigIntObject.cpp Everywhere: Use linusg@serenityos.org for my copyright headers 2021-04-22 22:51:19 +02:00
BigIntObject.h Everywhere: Use linusg@serenityos.org for my copyright headers 2021-04-22 22:51:19 +02:00
BigIntPrototype.cpp LibJS: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +01:00
BigIntPrototype.h Everywhere: Use linusg@serenityos.org for my copyright headers 2021-04-22 22:51:19 +02:00
BooleanConstructor.cpp LibJS: Accept FlyStrings in the NativeFunction constructors 2021-06-28 08:55:14 +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: Don't repeat attributes in {Boolean,Symbol}Prototype 2021-06-13 21:33:41 +01:00
BooleanPrototype.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
BoundFunction.cpp LibJS: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +01:00
BoundFunction.h LibJS: Drop "Record" suffix from all the *Environment record classes 2021-07-01 12:28:57 +02:00
CommonPropertyNames.h LibJS: Add and use the %ThrowTypeError% intrinsic 2021-06-28 08:55:14 +01:00
ConsoleObject.cpp LibJS: Add ECMA-262 section/title/URL comments almost everywhere 2021-06-13 00:33:28 +01:00
ConsoleObject.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
DataView.cpp LibJS: Consistently make prototype the last argument in Object ctors 2021-06-20 12:12:39 +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: Accept FlyStrings in the NativeFunction constructors 2021-06-28 08:55:14 +01:00
DataViewConstructor.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
DataViewPrototype.cpp LibJS: Change PropertyName(Symbol*) => PropertyName(Symbol&) 2021-06-25 22:01:23 +01:00
DataViewPrototype.h LibJS: Add all of the DataView.prototype.set* methods 2021-06-14 01:45:04 +01:00
Date.cpp LibJS: Use OrdinaryCreateFromConstructor() in a bunch of constructors 2021-06-20 12:12:39 +02:00
Date.h LibJS: Check dates are below the time_clip threshold 2021-06-06 19:14:11 +01:00
DateConstructor.cpp LibJS: Accept FlyStrings in the NativeFunction constructors 2021-06-28 08:55:14 +01:00
DateConstructor.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
DatePrototype.cpp LibJS: Stop coercing Date.prototype[Symbol.toPrimitive] hint to string 2021-07-01 09:55:50 +01:00
DatePrototype.h LibJS: Add Date.prototype.toJSON() 2021-06-06 19:14:11 +01:00
DeclarativeEnvironment.cpp LibJS: Make Environment::put_into_environment() return a success bool 2021-07-02 00:26:31 +02:00
DeclarativeEnvironment.h LibJS: Make Environment::put_into_environment() return a success bool 2021-07-02 00:26:31 +02:00
Environment.cpp LibJS: Drop "Record" suffix from all the *Environment record classes 2021-07-01 12:28:57 +02:00
Environment.h LibJS: Make Environment::put_into_environment() return a success bool 2021-07-02 00:26:31 +02:00
Error.cpp LibJS: Move install_error_cause() from Object to Error 2021-06-26 19:06:55 +01:00
Error.h LibJS: Move install_error_cause() from Object to Error 2021-06-26 19:06:55 +01:00
ErrorConstructor.cpp LibJS: Accept FlyStrings in the NativeFunction constructors 2021-06-28 08:55:14 +01:00
ErrorConstructor.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
ErrorPrototype.cpp LibJS: Add ECMA-262 section/title/URL comments almost everywhere 2021-06-13 00:33:28 +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: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +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
FinalizationRegistry.cpp LibJS: Fix typo "sweeped" => "swept" everywhere 2021-06-27 22:40:49 +02:00
FinalizationRegistry.h LibJS: Fix typo "sweeped" => "swept" everywhere 2021-06-27 22:40:49 +02:00
FinalizationRegistryConstructor.cpp LibJS: Accept FlyStrings in the NativeFunction constructors 2021-06-28 08:55:14 +01:00
FinalizationRegistryConstructor.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
FinalizationRegistryPrototype.cpp LibJS: Change PropertyName(Symbol*) => PropertyName(Symbol&) 2021-06-25 22:01:23 +01:00
FinalizationRegistryPrototype.h LibJS: Add all of the FinalizationRegistry.prototype methods 2021-06-15 23:59:21 +01:00
FunctionConstructor.cpp LibJS: Accept FlyStrings in the NativeFunction constructors 2021-06-28 08:55:14 +01:00
FunctionConstructor.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
FunctionEnvironment.cpp LibJS: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +01:00
FunctionEnvironment.h LibJS: Drop "Record" suffix from all the *Environment record classes 2021-07-01 12:28:57 +02:00
FunctionObject.cpp LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
FunctionObject.h LibJS: Drop "Record" suffix from all the *Environment record classes 2021-07-01 12:28:57 +02:00
FunctionPrototype.cpp LibJS: Stop coercing this to object in Function's Symbol.hasInstance 2021-07-01 11:35:16 +02:00
FunctionPrototype.h Everywhere: Use linusg@serenityos.org for my copyright headers 2021-04-22 22:51:19 +02:00
GeneratorFunctionConstructor.cpp LibJS: Rename ScriptFunction => OrdinaryFunctionObject 2021-06-27 22:36:04 +02:00
GeneratorFunctionConstructor.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
GeneratorFunctionPrototype.cpp LibJS: Change PropertyName(Symbol*) => PropertyName(Symbol&) 2021-06-25 22:01:23 +01:00
GeneratorFunctionPrototype.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
GeneratorObject.cpp LibJS: Drop "Record" suffix from all the *Environment record classes 2021-07-01 12:28:57 +02:00
GeneratorObject.h LibJS: Drop "Record" suffix from all the *Environment record classes 2021-07-01 12:28:57 +02:00
GeneratorObjectPrototype.cpp LibJS: Change PropertyName(Symbol*) => PropertyName(Symbol&) 2021-06-25 22:01:23 +01:00
GeneratorObjectPrototype.h LibJS: Add the remaining generator objects 2021-06-19 00:04:57 +01:00
GlobalEnvironment.cpp LibJS: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +01:00
GlobalEnvironment.h LibJS: Make Environment::put_into_environment() return a success bool 2021-07-02 00:26:31 +02:00
GlobalObject.cpp LibJS: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +01:00
GlobalObject.h LibJS: Drop "Record" suffix from all the *Environment record classes 2021-07-01 12:28:57 +02:00
IndexedProperties.cpp LibJS: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +01:00
IndexedProperties.h LibJS: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +01:00
IteratorOperations.cpp LibJS: Add the IteratorStep abstract iterator operation 2021-07-04 00:51:43 +01:00
IteratorOperations.h LibJS: Add the IteratorStep abstract iterator operation 2021-07-04 00:51:43 +01: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: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
JSONObject.cpp LibJS: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +01:00
JSONObject.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
Map.cpp LibJS: Add the Map built-in object 2021-06-13 00:33:18 +01: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: Accept FlyStrings in the NativeFunction constructors 2021-06-28 08:55:14 +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: Bring ArrayCreate and ArrayConstructor closer to spec 2021-07-04 00:51:43 +01:00
MapIteratorPrototype.h LibJS: Add the MapIterator built-in and the key/values/entries methods 2021-06-13 00:33:18 +01:00
MapPrototype.cpp LibJS: Change PropertyName(Symbol*) => PropertyName(Symbol&) 2021-06-25 22:01:23 +01:00
MapPrototype.h LibJS: Add the MapIterator built-in and the key/values/entries methods 2021-06-13 00:33:18 +01:00
MarkedValueList.cpp Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
MarkedValueList.h AK: Rename Vector::append(Vector) => Vector::extend(Vector) 2021-06-12 13:24:45 +02:00
MathObject.cpp LibJS: Handle values close to -0.5 correctly in Math.round(x) 2021-06-28 01:19:11 +01:00
MathObject.h LibJS: Add Math.imul() 2021-06-05 14:56:58 +01:00
NativeFunction.cpp LibJS: Drop "Record" suffix from all the *Environment record classes 2021-07-01 12:28:57 +02:00
NativeFunction.h LibJS: Drop "Record" suffix from all the *Environment record classes 2021-07-01 12:28:57 +02:00
NativeProperty.cpp LibJS: Stop qualifying AK::Function 2021-06-27 22:40:49 +02:00
NativeProperty.h LibJS: Stop qualifying AK::Function 2021-06-27 22:40:49 +02:00
NumberConstructor.cpp LibJS: Accept FlyStrings in the NativeFunction constructors 2021-06-28 08:55:14 +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: Add the Number.prototype.toFixed method 2021-06-19 16:13:59 +01:00
NumberPrototype.h LibJS: Add the Number.prototype.toFixed method 2021-06-19 16:13:59 +01:00
Object.cpp LibJS: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +01:00
Object.h LibJS: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +01:00
ObjectConstructor.cpp LibJS: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +01:00
ObjectConstructor.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
ObjectEnvironment.cpp LibJS: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +01:00
ObjectEnvironment.h LibJS: Make Environment::put_into_environment() return a success bool 2021-07-02 00:26:31 +02:00
ObjectPrototype.cpp LibJS: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +01:00
ObjectPrototype.h LibJS: Add the Object.prototype.__lookup{Getter, Setter}__ methods 2021-06-17 13:20:18 +01:00
OrdinaryFunctionObject.cpp LibJS: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +01:00
OrdinaryFunctionObject.h LibJS: Drop "Record" suffix from all the *Environment record classes 2021-07-01 12:28:57 +02:00
PrimitiveString.cpp Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
PrimitiveString.h LibJS: Move Cell.{cpp,h} from Runtime/ to Heap/ 2021-05-17 19:53:00 +02:00
Promise.cpp LibJS: Add ECMA-262 section/title/URL comments almost everywhere 2021-06-13 00:33:28 +01:00
Promise.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
PromiseConstructor.cpp LibJS: Accept FlyStrings in the NativeFunction constructors 2021-06-28 08:55:14 +01:00
PromiseConstructor.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
PromiseJobs.cpp LibJS: Add ECMA-262 section/title/URL comments almost everywhere 2021-06-13 00:33:28 +01:00
PromiseJobs.h Everywhere: Use linusg@serenityos.org for my copyright headers 2021-04-22 22:51:19 +02:00
PromisePrototype.cpp LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
PromisePrototype.h Everywhere: Use linusg@serenityos.org for my copyright headers 2021-04-22 22:51:19 +02:00
PromiseReaction.cpp LibJS: Fix .length attributes of various native functions 2021-06-17 13:10:06 +01:00
PromiseReaction.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
PromiseResolvingFunction.cpp LibJS: Fix .length attributes of various native functions 2021-06-17 13:10:06 +01:00
PromiseResolvingFunction.h LibJS: Stop qualifying AK::Function 2021-06-27 22:40:49 +02:00
PropertyAttributes.h LibJS: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +01:00
PropertyDescriptor.cpp LibJS: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +01:00
PropertyDescriptor.h LibJS: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +01:00
PropertyName.h LibJS: Handle invalid and symbol PropertyName in its AK::Formatter 2021-07-04 22:07:36 +01:00
ProxyConstructor.cpp LibJS: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +01:00
ProxyConstructor.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
ProxyObject.cpp LibJS: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +01:00
ProxyObject.h LibJS: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +01:00
Reference.cpp LibJS: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +01:00
Reference.h LibJS: Drop "Record" suffix from all the *Environment record classes 2021-07-01 12:28:57 +02:00
ReflectObject.cpp LibJS: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +01:00
ReflectObject.h Everywhere: Use linusg@serenityos.org for my copyright headers 2021-04-22 22:51:19 +02:00
RegExpConstructor.cpp LibJS: Accept FlyStrings in the NativeFunction constructors 2021-06-28 08:55:14 +01:00
RegExpConstructor.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
RegExpObject.cpp LibJS: Add ECMA-262 section/title/URL comments almost everywhere 2021-06-13 00:33:28 +01:00
RegExpObject.h Userland: Use mattco@serenityos.org for my copyright headers 2021-04-23 08:24:53 +02:00
RegExpPrototype.cpp LibJS: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +01:00
RegExpPrototype.h Userland: Use mattco@serenityos.org for my copyright headers 2021-04-23 08:24:53 +02:00
Set.cpp LibJS: Stop inheriting from Set in SetPrototype 2021-06-09 18:01:19 +01: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: Accept FlyStrings in the NativeFunction constructors 2021-06-28 08:55:14 +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: Bring ArrayCreate and ArrayConstructor closer to spec 2021-07-04 00:51:43 +01:00
SetIteratorPrototype.h LibJS: Add the SetIterator built-in and Set.prototype.{values, entries} 2021-06-09 11:48:04 +01:00
SetPrototype.cpp LibJS: Change PropertyName(Symbol*) => PropertyName(Symbol&) 2021-06-25 22:01:23 +01:00
SetPrototype.h LibJS: Stop inheriting from Set in SetPrototype 2021-06-09 18:01:19 +01:00
Shape.cpp LibJS: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +01:00
Shape.h LibJS: Avoid lots of string-to-int during global object construction 2021-06-13 19:11:29 +02:00
StringConstructor.cpp LibJS: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +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: Change PropertyName(Symbol*) => PropertyName(Symbol&) 2021-06-25 22:01:23 +01:00
StringIteratorPrototype.h Userland: Use mattco@serenityos.org for my copyright headers 2021-04-23 08:24:53 +02:00
StringObject.cpp LibJS: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +01:00
StringObject.h LibJS: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +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: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +01:00
StringPrototype.h LibJS: Add the String.prototype.search method 2021-06-16 20:05:18 +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: Accept FlyStrings in the NativeFunction constructors 2021-06-28 08:55:14 +01:00
SymbolConstructor.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
SymbolObject.cpp Userland: Use mattco@serenityos.org for my copyright headers 2021-04-23 08:24:53 +02:00
SymbolObject.h LibJS: Store and return undefined Symbol description 2021-06-15 18:31:52 +01:00
SymbolPrototype.cpp LibJS: Change PropertyName(Symbol*) => PropertyName(Symbol&) 2021-06-25 22:01:23 +01: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: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +01:00
TypedArray.h LibJS: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +01:00
TypedArrayConstructor.cpp LibJS: Accept FlyStrings in the NativeFunction constructors 2021-06-28 08:55:14 +01:00
TypedArrayConstructor.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
TypedArrayPrototype.cpp Everywhere: Fix incorrect usages of AK::Checked 2021-07-04 20:08:28 +01:00
TypedArrayPrototype.h LibJS: Implement the %TypedArray%.set() function 2021-07-02 04:53:01 +04:30
Value.cpp LibJS: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +01:00
Value.h LibJS: Add Value::operator==() 2021-07-04 22:07:36 +01:00
VM.cpp LibJS: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +01:00
VM.h LibJS: Improve ResolveBinding + add GetIdentifierReference 2021-07-02 22:22:21 +02:00
WeakContainer.h LibJS: Fix typo "sweeped" => "swept" everywhere 2021-06-27 22:40:49 +02:00
WeakMap.cpp LibJS: Fix typo "sweeped" => "swept" everywhere 2021-06-27 22:40:49 +02:00
WeakMap.h LibJS: Fix typo "sweeped" => "swept" everywhere 2021-06-27 22:40:49 +02:00
WeakMapConstructor.cpp LibJS: Accept FlyStrings in the NativeFunction constructors 2021-06-28 08:55:14 +01:00
WeakMapConstructor.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
WeakMapPrototype.cpp LibJS: Change PropertyName(Symbol*) => PropertyName(Symbol&) 2021-06-25 22:01:23 +01:00
WeakMapPrototype.h LibJS: Add all of the WeakMap.prototype methods (delete, get, has, set) 2021-06-12 10:44:28 +01:00
WeakRef.cpp LibJS: Fix typo "sweeped" => "swept" everywhere 2021-06-27 22:40:49 +02:00
WeakRef.h LibJS: Fix typo "sweeped" => "swept" everywhere 2021-06-27 22:40:49 +02:00
WeakRefConstructor.cpp LibJS: Accept FlyStrings in the NativeFunction constructors 2021-06-28 08:55:14 +01:00
WeakRefConstructor.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
WeakRefPrototype.cpp LibJS: Change PropertyName(Symbol*) => PropertyName(Symbol&) 2021-06-25 22:01:23 +01:00
WeakRefPrototype.h LibJS: Add the WeakRef.prototype.deref method 2021-06-12 18:39:23 +01:00
WeakSet.cpp LibJS: Fix typo "sweeped" => "swept" everywhere 2021-06-27 22:40:49 +02:00
WeakSet.h LibJS: Fix typo "sweeped" => "swept" everywhere 2021-06-27 22:40:49 +02:00
WeakSetConstructor.cpp LibJS: Accept FlyStrings in the NativeFunction constructors 2021-06-28 08:55:14 +01:00
WeakSetConstructor.h LibJS: Rename Function => FunctionObject 2021-06-27 22:36:04 +02:00
WeakSetPrototype.cpp LibJS: Change PropertyName(Symbol*) => PropertyName(Symbol&) 2021-06-25 22:01:23 +01:00
WeakSetPrototype.h LibJS: Add all of the WeakSet.prototype methods (add, delete, has) 2021-06-09 21:52:25 +01:00