1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 23:57:34 +00:00

LibJS: Make Cell::initialize() return void

Stop worrying about tiny OOMs.

Work towards #20405
This commit is contained in:
Andreas Kling 2023-08-07 08:41:28 +02:00
parent fde26c53f0
commit 18c54d8d40
804 changed files with 1330 additions and 2171 deletions

View file

@ -19,17 +19,15 @@ AggregateErrorConstructor::AggregateErrorConstructor(Realm& realm)
{
}
ThrowCompletionOr<void> AggregateErrorConstructor::initialize(Realm& realm)
void AggregateErrorConstructor::initialize(Realm& realm)
{
auto& vm = this->vm();
MUST_OR_THROW_OOM(NativeFunction::initialize(realm));
Base::initialize(realm);
// 20.5.7.2.1 AggregateError.prototype, https://tc39.es/ecma262/#sec-aggregate-error.prototype
define_direct_property(vm.names.prototype, realm.intrinsics().aggregate_error_prototype(), 0);
define_direct_property(vm.names.length, Value(2), Attribute::Configurable);
return {};
}
// 20.5.7.1.1 AggregateError ( errors, message [ , options ] ), https://tc39.es/ecma262/#sec-aggregate-error

View file

@ -14,7 +14,7 @@ class AggregateErrorConstructor final : public NativeFunction {
JS_OBJECT(AggregateErrorConstructor, NativeFunction);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~AggregateErrorConstructor() override = default;
virtual ThrowCompletionOr<Value> call() override;

View file

@ -15,15 +15,13 @@ AggregateErrorPrototype::AggregateErrorPrototype(Realm& realm)
{
}
ThrowCompletionOr<void> AggregateErrorPrototype::initialize(Realm& realm)
void AggregateErrorPrototype::initialize(Realm& realm)
{
auto& vm = this->vm();
MUST_OR_THROW_OOM(Base::initialize(realm));
Base::initialize(realm);
u8 attr = Attribute::Writable | Attribute::Configurable;
define_direct_property(vm.names.name, MUST_OR_THROW_OOM(PrimitiveString::create(vm, "AggregateError"sv)), attr);
define_direct_property(vm.names.name, MUST(PrimitiveString::create(vm, "AggregateError"sv)), attr);
define_direct_property(vm.names.message, PrimitiveString::create(vm, String {}), attr);
return {};
}
}

View file

@ -14,7 +14,7 @@ class AggregateErrorPrototype final : public Object {
JS_OBJECT(AggregateErrorPrototype, Object);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~AggregateErrorPrototype() override = default;
private:

View file

@ -16,13 +16,11 @@ ArgumentsObject::ArgumentsObject(Realm& realm, Environment& environment)
{
}
ThrowCompletionOr<void> ArgumentsObject::initialize(Realm& realm)
void ArgumentsObject::initialize(Realm& realm)
{
MUST_OR_THROW_OOM(Base::initialize(realm));
Base::initialize(realm);
set_has_parameter_map();
m_parameter_map = Object::create(realm, nullptr);
return {};
}
void ArgumentsObject::visit_edges(Cell::Visitor& visitor)

View file

@ -16,7 +16,7 @@ class ArgumentsObject final : public Object {
JS_OBJECT(ArgumentsObject, Object);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~ArgumentsObject() override = default;
Environment& environment() { return m_environment; }

View file

@ -19,10 +19,10 @@ ArrayBufferConstructor::ArrayBufferConstructor(Realm& realm)
{
}
ThrowCompletionOr<void> ArrayBufferConstructor::initialize(Realm& realm)
void ArrayBufferConstructor::initialize(Realm& realm)
{
auto& vm = this->vm();
MUST_OR_THROW_OOM(NativeFunction::initialize(realm));
Base::initialize(realm);
// 25.1.4.2 ArrayBuffer.prototype, https://tc39.es/ecma262/#sec-arraybuffer.prototype
define_direct_property(vm.names.prototype, realm.intrinsics().array_buffer_prototype(), 0);
@ -34,8 +34,6 @@ ThrowCompletionOr<void> ArrayBufferConstructor::initialize(Realm& realm)
define_native_accessor(realm, vm.well_known_symbol_species(), symbol_species_getter, {}, Attribute::Configurable);
define_direct_property(vm.names.length, Value(1), Attribute::Configurable);
return {};
}
// 25.1.3.1 ArrayBuffer ( length ), https://tc39.es/ecma262/#sec-arraybuffer-length

View file

@ -14,7 +14,7 @@ class ArrayBufferConstructor final : public NativeFunction {
JS_OBJECT(ArrayBufferConstructor, NativeFunction);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~ArrayBufferConstructor() override = default;
virtual ThrowCompletionOr<Value> call() override;

View file

@ -19,10 +19,10 @@ ArrayBufferPrototype::ArrayBufferPrototype(Realm& realm)
{
}
ThrowCompletionOr<void> ArrayBufferPrototype::initialize(Realm& realm)
void ArrayBufferPrototype::initialize(Realm& realm)
{
auto& vm = this->vm();
MUST_OR_THROW_OOM(Base::initialize(realm));
Base::initialize(realm);
u8 attr = Attribute::Writable | Attribute::Configurable;
define_native_function(realm, vm.names.slice, slice, 2, attr);
define_native_function(realm, vm.names.transfer, transfer, 0, attr);
@ -32,8 +32,6 @@ ThrowCompletionOr<void> ArrayBufferPrototype::initialize(Realm& realm)
// 25.1.5.4 ArrayBuffer.prototype [ @@toStringTag ], https://tc39.es/ecma262/#sec-arraybuffer.prototype-@@tostringtag
define_direct_property(vm.well_known_symbol_to_string_tag(), PrimitiveString::create(vm, vm.names.ArrayBuffer.as_string()), Attribute::Configurable);
return {};
}
// 25.1.5.3 ArrayBuffer.prototype.slice ( start, end ), https://tc39.es/ecma262/#sec-arraybuffer.prototype.slice

View file

@ -15,7 +15,7 @@ class ArrayBufferPrototype final : public PrototypeObject<ArrayBufferPrototype,
JS_PROTOTYPE_OBJECT(ArrayBufferPrototype, ArrayBuffer, ArrayBuffer);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~ArrayBufferPrototype() override = default;
private:

View file

@ -27,10 +27,10 @@ ArrayConstructor::ArrayConstructor(Realm& realm)
{
}
ThrowCompletionOr<void> ArrayConstructor::initialize(Realm& realm)
void ArrayConstructor::initialize(Realm& realm)
{
auto& vm = this->vm();
MUST_OR_THROW_OOM(NativeFunction::initialize(realm));
Base::initialize(realm);
// 23.1.2.4 Array.prototype, https://tc39.es/ecma262/#sec-array.prototype
define_direct_property(vm.names.prototype, realm.intrinsics().array_prototype(), 0);
@ -45,8 +45,6 @@ ThrowCompletionOr<void> ArrayConstructor::initialize(Realm& realm)
define_native_accessor(realm, vm.well_known_symbol_species(), symbol_species_getter, {}, Attribute::Configurable);
define_direct_property(vm.names.length, Value(1), Attribute::Configurable);
return {};
}
// 23.1.1.1 Array ( ...values ), https://tc39.es/ecma262/#sec-array

View file

@ -14,7 +14,7 @@ class ArrayConstructor final : public NativeFunction {
JS_OBJECT(ArrayConstructor, NativeFunction);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~ArrayConstructor() override = default;
virtual ThrowCompletionOr<Value> call() override;

View file

@ -19,17 +19,15 @@ ArrayIteratorPrototype::ArrayIteratorPrototype(Realm& realm)
{
}
ThrowCompletionOr<void> ArrayIteratorPrototype::initialize(Realm& realm)
void ArrayIteratorPrototype::initialize(Realm& realm)
{
auto& vm = this->vm();
MUST_OR_THROW_OOM(Base::initialize(realm));
Base::initialize(realm);
define_native_function(realm, vm.names.next, next, 0, Attribute::Configurable | Attribute::Writable);
// 23.1.5.2.2 %ArrayIteratorPrototype% [ @@toStringTag ], https://tc39.es/ecma262/#sec-%arrayiteratorprototype%-@@tostringtag
define_direct_property(vm.well_known_symbol_to_string_tag(), MUST_OR_THROW_OOM(PrimitiveString::create(vm, "Array Iterator"sv)), Attribute::Configurable);
return {};
define_direct_property(vm.well_known_symbol_to_string_tag(), MUST(PrimitiveString::create(vm, "Array Iterator"sv)), Attribute::Configurable);
}
// 23.1.5.2.1 %ArrayIteratorPrototype%.next ( ), https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next

View file

@ -15,7 +15,7 @@ class ArrayIteratorPrototype final : public PrototypeObject<ArrayIteratorPrototy
JS_PROTOTYPE_OBJECT(ArrayIteratorPrototype, ArrayIterator, ArrayIterator);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~ArrayIteratorPrototype() override = default;
private:

View file

@ -33,10 +33,10 @@ ArrayPrototype::ArrayPrototype(Realm& realm)
{
}
ThrowCompletionOr<void> ArrayPrototype::initialize(Realm& realm)
void ArrayPrototype::initialize(Realm& realm)
{
auto& vm = this->vm();
MUST_OR_THROW_OOM(Array::initialize(realm));
Base::initialize(realm);
u8 attr = Attribute::Writable | Attribute::Configurable;
define_native_function(realm, vm.names.at, at, 1, attr);
@ -104,8 +104,6 @@ ThrowCompletionOr<void> ArrayPrototype::initialize(Realm& realm)
MUST(unscopable_list->create_data_property_or_throw(vm.names.values, Value(true)));
define_direct_property(vm.well_known_symbol_unscopables(), unscopable_list, Attribute::Configurable);
return {};
}
// 10.4.2.3 ArraySpeciesCreate ( originalArray, length ), https://tc39.es/ecma262/#sec-arrayspeciescreate

View file

@ -15,7 +15,7 @@ class ArrayPrototype final : public Array {
JS_OBJECT(ArrayPrototype, Array);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~ArrayPrototype() override = default;
private:

View file

@ -22,12 +22,6 @@ AsyncFromSyncIterator::AsyncFromSyncIterator(Realm& realm, IteratorRecord sync_i
{
}
ThrowCompletionOr<void> AsyncFromSyncIterator::initialize(Realm& realm)
{
MUST_OR_THROW_OOM(Base::initialize(realm));
return {};
}
void AsyncFromSyncIterator::visit_edges(Cell::Visitor& visitor)
{
Base::visit_edges(visitor);

View file

@ -19,7 +19,6 @@ class AsyncFromSyncIterator final : public Object {
public:
static NonnullGCPtr<AsyncFromSyncIterator> create(Realm&, IteratorRecord sync_iterator_record);
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual ~AsyncFromSyncIterator() override = default;
void visit_edges(Visitor& visitor) override;

View file

@ -19,17 +19,15 @@ AsyncFromSyncIteratorPrototype::AsyncFromSyncIteratorPrototype(Realm& realm)
{
}
ThrowCompletionOr<void> AsyncFromSyncIteratorPrototype::initialize(Realm& realm)
void AsyncFromSyncIteratorPrototype::initialize(Realm& realm)
{
auto& vm = this->vm();
MUST_OR_THROW_OOM(Base::initialize(realm));
Base::initialize(realm);
u8 attr = Attribute::Writable | Attribute::Configurable;
define_native_function(realm, vm.names.next, next, 1, attr);
define_native_function(realm, vm.names.return_, return_, 1, attr);
define_native_function(realm, vm.names.throw_, throw_, 1, attr);
return {};
}
// 27.1.4.4 AsyncFromSyncIteratorContinuation ( result, promiseCapability ), https://tc39.es/ecma262/#sec-asyncfromsynciteratorcontinuation

View file

@ -19,7 +19,7 @@ class AsyncFromSyncIteratorPrototype final : public PrototypeObject<AsyncFromSyn
JS_PROTOTYPE_OBJECT(AsyncFromSyncIteratorPrototype, AsyncFromSyncIterator, AsyncFromSyncIterator);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~AsyncFromSyncIteratorPrototype() override = default;
private:

View file

@ -17,17 +17,15 @@ AsyncFunctionConstructor::AsyncFunctionConstructor(Realm& realm)
{
}
ThrowCompletionOr<void> AsyncFunctionConstructor::initialize(Realm& realm)
void AsyncFunctionConstructor::initialize(Realm& realm)
{
auto& vm = this->vm();
MUST_OR_THROW_OOM(NativeFunction::initialize(realm));
Base::initialize(realm);
// 27.7.2.2 AsyncFunction.prototype, https://tc39.es/ecma262/#sec-async-function-constructor-prototype
define_direct_property(vm.names.prototype, realm.intrinsics().async_function_prototype(), 0);
define_direct_property(vm.names.length, Value(1), Attribute::Configurable);
return {};
}
// 27.7.1.1 AsyncFunction ( p1, p2, … , pn, body ), https://tc39.es/ecma262/#sec-async-function-constructor-arguments

View file

@ -14,7 +14,7 @@ class AsyncFunctionConstructor final : public NativeFunction {
JS_OBJECT(AsyncFunctionConstructor, NativeFunction);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~AsyncFunctionConstructor() override = default;
virtual ThrowCompletionOr<Value> call() override;

View file

@ -14,15 +14,13 @@ AsyncFunctionPrototype::AsyncFunctionPrototype(Realm& realm)
{
}
ThrowCompletionOr<void> AsyncFunctionPrototype::initialize(Realm& realm)
void AsyncFunctionPrototype::initialize(Realm& realm)
{
auto& vm = this->vm();
MUST_OR_THROW_OOM(Base::initialize(realm));
Base::initialize(realm);
// 27.7.3.2 AsyncFunction.prototype [ @@toStringTag ], https://tc39.es/ecma262/#sec-async-function-prototype-properties-toStringTag
define_direct_property(vm.well_known_symbol_to_string_tag(), PrimitiveString::create(vm, vm.names.AsyncFunction.as_string()), Attribute::Configurable);
return {};
}
}

View file

@ -14,7 +14,7 @@ class AsyncFunctionPrototype final : public Object {
JS_OBJECT(AsyncFunctionPrototype, Object);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~AsyncFunctionPrototype() override = default;
private:

View file

@ -17,18 +17,16 @@ AsyncGeneratorFunctionConstructor::AsyncGeneratorFunctionConstructor(Realm& real
{
}
ThrowCompletionOr<void> AsyncGeneratorFunctionConstructor::initialize(Realm& realm)
void AsyncGeneratorFunctionConstructor::initialize(Realm& realm)
{
auto& vm = this->vm();
MUST_OR_THROW_OOM(NativeFunction::initialize(realm));
Base::initialize(realm);
// 27.4.2.1 AsyncGeneratorFunction.length, https://tc39.es/ecma262/#sec-asyncgeneratorfunction-length
define_direct_property(vm.names.length, Value(1), Attribute::Configurable);
// 27.4.2.2 AsyncGeneratorFunction.prototype, https://tc39.es/ecma262/#sec-asyncgeneratorfunction-prototype
define_direct_property(vm.names.prototype, realm.intrinsics().async_generator_function_prototype(), 0);
return {};
}
// 27.4.1.1 AsyncGeneratorFunction ( p1, p2, … , pn, body ), https://tc39.es/ecma262/#sec-asyncgeneratorfunction

View file

@ -14,7 +14,7 @@ class AsyncGeneratorFunctionConstructor final : public NativeFunction {
JS_OBJECT(AsyncGeneratorFunctionConstructor, NativeFunction);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~AsyncGeneratorFunctionConstructor() override = default;
virtual ThrowCompletionOr<Value> call() override;

View file

@ -16,10 +16,10 @@ AsyncGeneratorFunctionPrototype::AsyncGeneratorFunctionPrototype(Realm& realm)
{
}
ThrowCompletionOr<void> AsyncGeneratorFunctionPrototype::initialize(Realm& realm)
void AsyncGeneratorFunctionPrototype::initialize(Realm& realm)
{
auto& vm = this->vm();
MUST_OR_THROW_OOM(Base::initialize(realm));
Base::initialize(realm);
// The constructor cannot be set at this point since it has not been initialized.
@ -28,8 +28,6 @@ ThrowCompletionOr<void> AsyncGeneratorFunctionPrototype::initialize(Realm& realm
// 27.4.3.3 AsyncGeneratorFunction.prototype [ @@toStringTag ], https://tc39.es/ecma262/#sec-asyncgeneratorfunction-prototype-tostringtag
define_direct_property(vm.well_known_symbol_to_string_tag(), PrimitiveString::create(vm, vm.names.AsyncGeneratorFunction.as_string()), Attribute::Configurable);
return {};
}
}

View file

@ -14,7 +14,7 @@ class AsyncGeneratorFunctionPrototype final : public PrototypeObject<AsyncGenera
JS_PROTOTYPE_OBJECT(AsyncGeneratorFunctionPrototype, AsyncGeneratorFunction, AsyncGeneratorFunction);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~AsyncGeneratorFunctionPrototype() override = default;
private:

View file

@ -18,19 +18,17 @@ AsyncGeneratorPrototype::AsyncGeneratorPrototype(Realm& realm)
{
}
ThrowCompletionOr<void> AsyncGeneratorPrototype::initialize(Realm& realm)
void AsyncGeneratorPrototype::initialize(Realm& realm)
{
auto& vm = this->vm();
MUST_OR_THROW_OOM(Base::initialize(realm));
Base::initialize(realm);
u8 attr = Attribute::Writable | Attribute::Configurable;
define_native_function(realm, vm.names.next, next, 1, attr);
define_native_function(realm, vm.names.return_, return_, 1, attr);
define_native_function(realm, vm.names.throw_, throw_, 1, attr);
// 27.6.1.5 AsyncGenerator.prototype [ @@toStringTag ], https://tc39.es/ecma262/#sec-asyncgenerator-prototype-tostringtag
define_direct_property(vm.well_known_symbol_to_string_tag(), MUST_OR_THROW_OOM(PrimitiveString::create(vm, "AsyncGenerator"sv)), Attribute::Configurable);
return {};
define_direct_property(vm.well_known_symbol_to_string_tag(), MUST(PrimitiveString::create(vm, "AsyncGenerator"sv)), Attribute::Configurable);
}
// 27.6.3.3 AsyncGeneratorValidate ( generator, generatorBrand ), https://tc39.es/ecma262/#sec-asyncgeneratorvalidate

View file

@ -16,7 +16,7 @@ class AsyncGeneratorPrototype final : public PrototypeObject<AsyncGeneratorProto
JS_PROTOTYPE_OBJECT(AsyncGeneratorPrototype, AsyncGenerator, AsyncGenerator)
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~AsyncGeneratorPrototype() override = default;
private:

View file

@ -13,14 +13,12 @@ AsyncIteratorPrototype::AsyncIteratorPrototype(Realm& realm)
{
}
ThrowCompletionOr<void> AsyncIteratorPrototype::initialize(Realm& realm)
void AsyncIteratorPrototype::initialize(Realm& realm)
{
auto& vm = this->vm();
MUST_OR_THROW_OOM(Base::initialize(realm));
Base::initialize(realm);
u8 attr = Attribute::Writable | Attribute::Configurable;
define_native_function(realm, vm.well_known_symbol_async_iterator(), symbol_async_iterator, 0, attr);
return {};
}
// 27.1.3.1 %AsyncIteratorPrototype% [ @@asyncIterator ] ( ), https://tc39.es/ecma262/#sec-asynciteratorprototype-asynciterator

View file

@ -14,7 +14,7 @@ class AsyncIteratorPrototype final : public Object {
JS_OBJECT(AsyncIteratorPrototype, Object)
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~AsyncIteratorPrototype() override = default;
private:

View file

@ -129,9 +129,9 @@ AtomicsObject::AtomicsObject(Realm& realm)
{
}
ThrowCompletionOr<void> AtomicsObject::initialize(Realm& realm)
void AtomicsObject::initialize(Realm& realm)
{
MUST_OR_THROW_OOM(Base::initialize(realm));
Base::initialize(realm);
auto& vm = this->vm();
u8 attr = Attribute::Writable | Attribute::Configurable;
@ -147,9 +147,7 @@ ThrowCompletionOr<void> AtomicsObject::initialize(Realm& realm)
define_native_function(realm, vm.names.xor_, xor_, 3, attr);
// 25.4.15 Atomics [ @@toStringTag ], https://tc39.es/ecma262/#sec-atomics-@@tostringtag
define_direct_property(vm.well_known_symbol_to_string_tag(), MUST_OR_THROW_OOM(PrimitiveString::create(vm, "Atomics"sv)), Attribute::Configurable);
return {};
define_direct_property(vm.well_known_symbol_to_string_tag(), MUST(PrimitiveString::create(vm, "Atomics"sv)), Attribute::Configurable);
}
// 25.4.3 Atomics.add ( typedArray, index, value ), https://tc39.es/ecma262/#sec-atomics.add

View file

@ -14,7 +14,7 @@ class AtomicsObject : public Object {
JS_OBJECT(AtomicsObject, Object);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~AtomicsObject() override = default;
private:

View file

@ -21,10 +21,10 @@ BigIntConstructor::BigIntConstructor(Realm& realm)
{
}
ThrowCompletionOr<void> BigIntConstructor::initialize(Realm& realm)
void BigIntConstructor::initialize(Realm& realm)
{
auto& vm = this->vm();
MUST_OR_THROW_OOM(NativeFunction::initialize(realm));
Base::initialize(realm);
// 21.2.2.3 BigInt.prototype, https://tc39.es/ecma262/#sec-bigint.prototype
define_direct_property(vm.names.prototype, realm.intrinsics().bigint_prototype(), 0);
@ -34,8 +34,6 @@ ThrowCompletionOr<void> BigIntConstructor::initialize(Realm& realm)
define_native_function(realm, vm.names.asUintN, as_uint_n, 2, attr);
define_direct_property(vm.names.length, Value(1), Attribute::Configurable);
return {};
}
// 21.2.1.1 BigInt ( value ), https://tc39.es/ecma262/#sec-bigint-constructor-number-value

View file

@ -14,7 +14,7 @@ class BigIntConstructor final : public NativeFunction {
JS_OBJECT(BigIntConstructor, NativeFunction);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~BigIntConstructor() override = default;
virtual ThrowCompletionOr<Value> call() override;

View file

@ -22,10 +22,10 @@ BigIntPrototype::BigIntPrototype(Realm& realm)
{
}
ThrowCompletionOr<void> BigIntPrototype::initialize(Realm& realm)
void BigIntPrototype::initialize(Realm& realm)
{
auto& vm = this->vm();
MUST_OR_THROW_OOM(Base::initialize(realm));
Base::initialize(realm);
u8 attr = Attribute::Writable | Attribute::Configurable;
define_native_function(realm, vm.names.toString, to_string, 0, attr);
define_native_function(realm, vm.names.toLocaleString, to_locale_string, 0, attr);
@ -33,8 +33,6 @@ ThrowCompletionOr<void> BigIntPrototype::initialize(Realm& realm)
// 21.2.3.5 BigInt.prototype [ @@toStringTag ], https://tc39.es/ecma262/#sec-bigint.prototype-@@tostringtag
define_direct_property(vm.well_known_symbol_to_string_tag(), PrimitiveString::create(vm, vm.names.BigInt.as_string()), Attribute::Configurable);
return {};
}
// thisBigIntValue ( value ), https://tc39.es/ecma262/#thisbigintvalue

View file

@ -14,7 +14,7 @@ class BigIntPrototype final : public Object {
JS_OBJECT(BigIntPrototype, Object);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~BigIntPrototype() override = default;
private:

View file

@ -17,17 +17,15 @@ BooleanConstructor::BooleanConstructor(Realm& realm)
{
}
ThrowCompletionOr<void> BooleanConstructor::initialize(Realm& realm)
void BooleanConstructor::initialize(Realm& realm)
{
auto& vm = this->vm();
MUST_OR_THROW_OOM(NativeFunction::initialize(realm));
Base::initialize(realm);
// 20.3.2.1 Boolean.prototype, https://tc39.es/ecma262/#sec-boolean.prototype
define_direct_property(vm.names.prototype, realm.intrinsics().boolean_prototype(), 0);
define_direct_property(vm.names.length, Value(1), Attribute::Configurable);
return {};
}
// 20.3.1.1 Boolean ( value ), https://tc39.es/ecma262/#sec-boolean-constructor-boolean-value

View file

@ -14,7 +14,7 @@ class BooleanConstructor final : public NativeFunction {
JS_OBJECT(BooleanConstructor, NativeFunction);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~BooleanConstructor() override = default;
virtual ThrowCompletionOr<Value> call() override;

View file

@ -18,15 +18,13 @@ BooleanPrototype::BooleanPrototype(Realm& realm)
{
}
ThrowCompletionOr<void> BooleanPrototype::initialize(Realm& realm)
void BooleanPrototype::initialize(Realm& realm)
{
auto& vm = this->vm();
MUST_OR_THROW_OOM(BooleanObject::initialize(realm));
Base::initialize(realm);
u8 attr = Attribute::Writable | Attribute::Configurable;
define_native_function(realm, vm.names.toString, to_string, 0, attr);
define_native_function(realm, vm.names.valueOf, value_of, 0, attr);
return {};
}
// thisBooleanValue ( value ), https://tc39.es/ecma262/#thisbooleanvalue

View file

@ -14,7 +14,7 @@ class BooleanPrototype final : public BooleanObject {
JS_OBJECT(BooleanPrototype, BooleanObject);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~BooleanPrototype() override = default;
private:

View file

@ -18,10 +18,10 @@ ConsoleObject::ConsoleObject(Realm& realm)
{
}
ThrowCompletionOr<void> ConsoleObject::initialize(Realm& realm)
void ConsoleObject::initialize(Realm& realm)
{
auto& vm = this->vm();
MUST_OR_THROW_OOM(Base::initialize(realm));
Base::initialize(realm);
u8 attr = Attribute::Writable | Attribute::Enumerable | Attribute::Configurable;
define_native_function(realm, vm.names.assert, assert_, 0, attr);
define_native_function(realm, vm.names.clear, clear, 0, attr);
@ -40,8 +40,6 @@ ThrowCompletionOr<void> ConsoleObject::initialize(Realm& realm)
define_native_function(realm, vm.names.time, time, 0, attr);
define_native_function(realm, vm.names.timeLog, time_log, 0, attr);
define_native_function(realm, vm.names.timeEnd, time_end, 0, attr);
return {};
}
// 1.1.1. assert(condition, ...data), https://console.spec.whatwg.org/#assert

View file

@ -14,7 +14,7 @@ class ConsoleObject final : public Object {
JS_OBJECT(ConsoleObject, Object);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~ConsoleObject() override = default;
Console& console() { return *m_console; }

View file

@ -19,17 +19,15 @@ DataViewConstructor::DataViewConstructor(Realm& realm)
{
}
ThrowCompletionOr<void> DataViewConstructor::initialize(Realm& realm)
void DataViewConstructor::initialize(Realm& realm)
{
auto& vm = this->vm();
MUST_OR_THROW_OOM(NativeFunction::initialize(realm));
Base::initialize(realm);
// 25.3.3.1 DataView.prototype, https://tc39.es/ecma262/#sec-dataview.prototype
define_direct_property(vm.names.prototype, realm.intrinsics().data_view_prototype(), 0);
define_direct_property(vm.names.length, Value(1), Attribute::Configurable);
return {};
}
// 25.3.2.1 DataView ( buffer [ , byteOffset [ , byteLength ] ] ), https://tc39.es/ecma262/#sec-dataview-buffer-byteoffset-bytelength

View file

@ -14,7 +14,7 @@ class DataViewConstructor final : public NativeFunction {
JS_OBJECT(DataViewConstructor, NativeFunction);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~DataViewConstructor() override = default;
virtual ThrowCompletionOr<Value> call() override;

View file

@ -15,10 +15,10 @@ DataViewPrototype::DataViewPrototype(Realm& realm)
{
}
ThrowCompletionOr<void> DataViewPrototype::initialize(Realm& realm)
void DataViewPrototype::initialize(Realm& realm)
{
auto& vm = this->vm();
MUST_OR_THROW_OOM(Base::initialize(realm));
Base::initialize(realm);
u8 attr = Attribute::Writable | Attribute::Configurable;
define_native_function(realm, vm.names.getBigInt64, get_big_int_64, 1, attr);
@ -48,8 +48,6 @@ ThrowCompletionOr<void> DataViewPrototype::initialize(Realm& realm)
// 25.3.4.25 DataView.prototype [ @@toStringTag ], https://tc39.es/ecma262/#sec-dataview.prototype-@@tostringtag
define_direct_property(vm.well_known_symbol_to_string_tag(), PrimitiveString::create(vm, vm.names.DataView.as_string()), Attribute::Configurable);
return {};
}
// 25.3.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ), https://tc39.es/ecma262/#sec-getviewvalue

View file

@ -15,7 +15,7 @@ class DataViewPrototype final : public PrototypeObject<DataViewPrototype, DataVi
JS_PROTOTYPE_OBJECT(DataViewPrototype, DataView, DataView);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~DataViewPrototype() override = default;
private:

View file

@ -185,10 +185,10 @@ DateConstructor::DateConstructor(Realm& realm)
{
}
ThrowCompletionOr<void> DateConstructor::initialize(Realm& realm)
void DateConstructor::initialize(Realm& realm)
{
auto& vm = this->vm();
MUST_OR_THROW_OOM(NativeFunction::initialize(realm));
Base::initialize(realm);
// 21.4.3.3 Date.prototype, https://tc39.es/ecma262/#sec-date.prototype
define_direct_property(vm.names.prototype, realm.intrinsics().date_prototype(), 0);
@ -199,8 +199,6 @@ ThrowCompletionOr<void> DateConstructor::initialize(Realm& realm)
define_native_function(realm, vm.names.UTC, utc, 7, attr);
define_direct_property(vm.names.length, Value(7), Attribute::Configurable);
return {};
}
// 21.4.2.1 Date ( ...values ), https://tc39.es/ecma262/#sec-date

View file

@ -14,7 +14,7 @@ class DateConstructor final : public NativeFunction {
JS_OBJECT(DateConstructor, NativeFunction);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~DateConstructor() override = default;
virtual ThrowCompletionOr<Value> call() override;

View file

@ -34,10 +34,10 @@ DatePrototype::DatePrototype(Realm& realm)
{
}
ThrowCompletionOr<void> DatePrototype::initialize(Realm& realm)
void DatePrototype::initialize(Realm& realm)
{
auto& vm = this->vm();
MUST_OR_THROW_OOM(Base::initialize(realm));
Base::initialize(realm);
u8 attr = Attribute::Writable | Attribute::Configurable;
define_native_function(realm, vm.names.getDate, get_date, 0, attr);
define_native_function(realm, vm.names.getDay, get_day, 0, attr);
@ -95,8 +95,6 @@ ThrowCompletionOr<void> DatePrototype::initialize(Realm& realm)
// B.2.4.3 Date.prototype.toGMTString ( ), https://tc39.es/ecma262/#sec-date.prototype.togmtstring
// The initial value of the "toGMTString" property is %Date.prototype.toUTCString%, defined in 21.4.4.43.
define_direct_property(vm.names.toGMTString, get_without_side_effects(vm.names.toUTCString), attr);
return {};
}
// thisTimeValue ( value ), https://tc39.es/ecma262/#thistimevalue

View file

@ -15,7 +15,7 @@ class DatePrototype final : public PrototypeObject<DatePrototype, Date> {
JS_PROTOTYPE_OBJECT(DatePrototype, Date, Date);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~DatePrototype() override = default;
private:

View file

@ -15,17 +15,15 @@ DisposableStackConstructor::DisposableStackConstructor(Realm& realm)
{
}
ThrowCompletionOr<void> DisposableStackConstructor::initialize(Realm& realm)
void DisposableStackConstructor::initialize(Realm& realm)
{
auto& vm = this->vm();
MUST_OR_THROW_OOM(NativeFunction::initialize(realm));
Base::initialize(realm);
// 26.2.2.1 DisposableStack.prototype, https://tc39.es/ecma262/#sec-finalization-registry.prototype
define_direct_property(vm.names.prototype, realm.intrinsics().disposable_stack_prototype(), 0);
define_direct_property(vm.names.length, Value(0), Attribute::Configurable);
return {};
}
// 11.3.1.1 DisposableStack ( ), https://tc39.es/proposal-explicit-resource-management/#sec-disposablestack

View file

@ -14,7 +14,7 @@ class DisposableStackConstructor final : public NativeFunction {
JS_OBJECT(DisposableStackConstructor, NativeFunction);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~DisposableStackConstructor() override = default;
virtual ThrowCompletionOr<Value> call() override;

View file

@ -17,10 +17,10 @@ DisposableStackPrototype::DisposableStackPrototype(Realm& realm)
{
}
ThrowCompletionOr<void> DisposableStackPrototype::initialize(Realm& realm)
void DisposableStackPrototype::initialize(Realm& realm)
{
auto& vm = this->vm();
MUST_OR_THROW_OOM(Base::initialize(realm));
Base::initialize(realm);
u8 attr = Attribute::Writable | Attribute::Configurable;
define_native_accessor(realm, vm.names.disposed, disposed_getter, {}, attr);
@ -35,8 +35,6 @@ ThrowCompletionOr<void> DisposableStackPrototype::initialize(Realm& realm)
// 11.3.3.8 DisposableStack.prototype [ @@toStringTag ], https://tc39.es/proposal-explicit-resource-management/#sec-disposablestack.prototype-@@toStringTag
define_direct_property(vm.well_known_symbol_to_string_tag(), PrimitiveString::create(vm, vm.names.DisposableStack.as_string()), Attribute::Configurable);
return {};
}
// 11.3.3.1 get DisposableStack.prototype.disposed, https://tc39.es/proposal-explicit-resource-management/#sec-get-disposablestack.prototype.disposed

View file

@ -15,7 +15,7 @@ class DisposableStackPrototype final : public PrototypeObject<DisposableStackPro
JS_PROTOTYPE_OBJECT(DisposableStackPrototype, DisposableStack, DisposableStack);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~DisposableStackPrototype() override = default;
private:

View file

@ -101,10 +101,10 @@ ECMAScriptFunctionObject::ECMAScriptFunctionObject(DeprecatedFlyString name, Dep
});
}
ThrowCompletionOr<void> ECMAScriptFunctionObject::initialize(Realm& realm)
void ECMAScriptFunctionObject::initialize(Realm& realm)
{
auto& vm = this->vm();
MUST_OR_THROW_OOM(Base::initialize(realm));
Base::initialize(realm);
// Note: The ordering of these properties must be: length, name, prototype which is the order
// they are defined in the spec: https://tc39.es/ecma262/#sec-function-instances .
// This is observable through something like: https://tc39.es/ecma262/#sec-ordinaryownpropertykeys
@ -118,7 +118,7 @@ ThrowCompletionOr<void> ECMAScriptFunctionObject::initialize(Realm& realm)
Object* prototype = nullptr;
switch (m_kind) {
case FunctionKind::Normal:
prototype = MUST_OR_THROW_OOM(vm.heap().allocate<Object>(realm, realm.intrinsics().new_ordinary_function_prototype_object_shape()));
prototype = MUST(vm.heap().allocate<Object>(realm, realm.intrinsics().new_ordinary_function_prototype_object_shape()));
MUST(prototype->define_property_or_throw(vm.names.constructor, { .value = this, .writable = true, .enumerable = false, .configurable = true }));
break;
case FunctionKind::Generator:
@ -136,8 +136,6 @@ ThrowCompletionOr<void> ECMAScriptFunctionObject::initialize(Realm& realm)
if (m_kind != FunctionKind::Async)
define_direct_property(vm.names.prototype, prototype, Attribute::Writable);
}
return {};
}
// 10.2.1 [[Call]] ( thisArgument, argumentsList ), https://tc39.es/ecma262/#sec-ecmascript-function-objects-call-thisargument-argumentslist

View file

@ -40,7 +40,7 @@ public:
static NonnullGCPtr<ECMAScriptFunctionObject> create(Realm&, DeprecatedFlyString name, DeprecatedString source_text, Statement const& ecmascript_code, Vector<FunctionParameter> parameters, i32 m_function_length, Vector<DeprecatedFlyString> local_variables_names, Environment* parent_environment, PrivateEnvironment* private_environment, FunctionKind, bool is_strict, bool might_need_arguments_object = true, bool contains_direct_call_to_eval = true, bool is_arrow_function = false, Variant<PropertyKey, PrivateName, Empty> class_field_initializer_name = {});
static NonnullGCPtr<ECMAScriptFunctionObject> create(Realm&, DeprecatedFlyString name, Object& prototype, DeprecatedString source_text, Statement const& ecmascript_code, Vector<FunctionParameter> parameters, i32 m_function_length, Vector<DeprecatedFlyString> local_variables_names, Environment* parent_environment, PrivateEnvironment* private_environment, FunctionKind, bool is_strict, bool might_need_arguments_object = true, bool contains_direct_call_to_eval = true, bool is_arrow_function = false, Variant<PropertyKey, PrivateName, Empty> class_field_initializer_name = {});
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~ECMAScriptFunctionObject() override = default;
virtual ThrowCompletionOr<Value> internal_call(Value this_argument, MarkedVector<Value> arguments_list) override;

View file

@ -16,17 +16,15 @@ ErrorConstructor::ErrorConstructor(Realm& realm)
{
}
ThrowCompletionOr<void> ErrorConstructor::initialize(Realm& realm)
void ErrorConstructor::initialize(Realm& realm)
{
auto& vm = this->vm();
MUST_OR_THROW_OOM(NativeFunction::initialize(realm));
Base::initialize(realm);
// 20.5.2.1 Error.prototype, https://tc39.es/ecma262/#sec-error.prototype
define_direct_property(vm.names.prototype, realm.intrinsics().error_prototype(), 0);
define_direct_property(vm.names.length, Value(1), Attribute::Configurable);
return {};
}
// 20.5.1.1 Error ( message [ , options ] ), https://tc39.es/ecma262/#sec-error-message
@ -69,17 +67,15 @@ ThrowCompletionOr<NonnullGCPtr<Object>> ErrorConstructor::construct(FunctionObje
{ \
} \
\
ThrowCompletionOr<void> ConstructorName::initialize(Realm& realm) \
void ConstructorName::initialize(Realm& realm) \
{ \
auto& vm = this->vm(); \
MUST_OR_THROW_OOM(NativeFunction::initialize(realm)); \
Base::initialize(realm); \
\
/* 20.5.6.2.1 NativeError.prototype, https://tc39.es/ecma262/#sec-nativeerror.prototype */ \
define_direct_property(vm.names.prototype, realm.intrinsics().snake_name##_prototype(), 0); \
\
define_direct_property(vm.names.length, Value(1), Attribute::Configurable); \
\
return {}; \
} \
\
ConstructorName::~ConstructorName() = default; \

View file

@ -15,7 +15,7 @@ class ErrorConstructor final : public NativeFunction {
JS_OBJECT(ErrorConstructor, NativeFunction);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~ErrorConstructor() override = default;
virtual ThrowCompletionOr<Value> call() override;
@ -32,7 +32,7 @@ private:
JS_OBJECT(ConstructorName, NativeFunction); \
\
public: \
virtual ThrowCompletionOr<void> initialize(Realm&) override; \
virtual void initialize(Realm&) override; \
virtual ~ConstructorName() override; \
virtual ThrowCompletionOr<Value> call() override; \
virtual ThrowCompletionOr<NonnullGCPtr<Object>> construct(FunctionObject& new_target) override; \

View file

@ -19,20 +19,18 @@ ErrorPrototype::ErrorPrototype(Realm& realm)
{
}
ThrowCompletionOr<void> ErrorPrototype::initialize(Realm& realm)
void ErrorPrototype::initialize(Realm& realm)
{
auto& vm = this->vm();
MUST_OR_THROW_OOM(Base::initialize(realm));
Base::initialize(realm);
u8 attr = Attribute::Writable | Attribute::Configurable;
define_direct_property(vm.names.name, MUST_OR_THROW_OOM(PrimitiveString::create(vm, "Error"sv)), attr);
define_direct_property(vm.names.name, MUST(PrimitiveString::create(vm, "Error"sv)), attr);
define_direct_property(vm.names.message, PrimitiveString::create(vm, String {}), attr);
define_native_function(realm, vm.names.toString, to_string, 0, attr);
// Non standard property "stack"
// Every other engine seems to have this in some way or another, and the spec
// proposal for this is only Stage 1
define_native_accessor(realm, vm.names.stack, stack_getter, stack_setter, attr);
return {};
}
// 20.5.3.4 Error.prototype.toString ( ), https://tc39.es/ecma262/#sec-error.prototype.tostring
@ -124,21 +122,19 @@ JS_DEFINE_NATIVE_FUNCTION(ErrorPrototype::stack_setter)
return TRY(this_object.create_data_property_or_throw(vm.names.stack, vm.argument(0)));
}
#define __JS_ENUMERATE(ClassName, snake_name, PrototypeName, ConstructorName, ArrayType) \
PrototypeName::PrototypeName(Realm& realm) \
: PrototypeObject(realm.intrinsics().error_prototype()) \
{ \
} \
\
ThrowCompletionOr<void> PrototypeName::initialize(Realm& realm) \
{ \
auto& vm = this->vm(); \
MUST_OR_THROW_OOM(Base::initialize(realm)); \
u8 attr = Attribute::Writable | Attribute::Configurable; \
define_direct_property(vm.names.name, MUST_OR_THROW_OOM(PrimitiveString::create(vm, #ClassName##sv)), attr); \
define_direct_property(vm.names.message, PrimitiveString::create(vm, String {}), attr); \
\
return {}; \
#define __JS_ENUMERATE(ClassName, snake_name, PrototypeName, ConstructorName, ArrayType) \
PrototypeName::PrototypeName(Realm& realm) \
: PrototypeObject(realm.intrinsics().error_prototype()) \
{ \
} \
\
void PrototypeName::initialize(Realm& realm) \
{ \
auto& vm = this->vm(); \
Base::initialize(realm); \
u8 attr = Attribute::Writable | Attribute::Configurable; \
define_direct_property(vm.names.name, MUST(PrimitiveString::create(vm, #ClassName##sv)), attr); \
define_direct_property(vm.names.message, PrimitiveString::create(vm, String {}), attr); \
}
JS_ENUMERATE_NATIVE_ERRORS

View file

@ -16,7 +16,7 @@ class ErrorPrototype final : public PrototypeObject<ErrorPrototype, Error> {
JS_PROTOTYPE_OBJECT(ErrorPrototype, Error, Error);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~ErrorPrototype() override = default;
private:
@ -32,7 +32,7 @@ private:
JS_PROTOTYPE_OBJECT(PrototypeName, ClassName, ClassName); \
\
public: \
virtual ThrowCompletionOr<void> initialize(Realm&) override; \
virtual void initialize(Realm&) override; \
virtual ~PrototypeName() override = default; \
\
private: \

View file

@ -18,17 +18,15 @@ FinalizationRegistryConstructor::FinalizationRegistryConstructor(Realm& realm)
{
}
ThrowCompletionOr<void> FinalizationRegistryConstructor::initialize(Realm& realm)
void FinalizationRegistryConstructor::initialize(Realm& realm)
{
auto& vm = this->vm();
MUST_OR_THROW_OOM(NativeFunction::initialize(realm));
Base::initialize(realm);
// 26.2.2.1 FinalizationRegistry.prototype, https://tc39.es/ecma262/#sec-finalization-registry.prototype
define_direct_property(vm.names.prototype, realm.intrinsics().finalization_registry_prototype(), 0);
define_direct_property(vm.names.length, Value(1), Attribute::Configurable);
return {};
}
// 26.2.1.1 FinalizationRegistry ( cleanupCallback ), https://tc39.es/ecma262/#sec-finalization-registry-cleanup-callback

View file

@ -14,7 +14,7 @@ class FinalizationRegistryConstructor final : public NativeFunction {
JS_OBJECT(FinalizationRegistryConstructor, NativeFunction);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~FinalizationRegistryConstructor() override = default;
virtual ThrowCompletionOr<Value> call() override;

View file

@ -15,10 +15,10 @@ FinalizationRegistryPrototype::FinalizationRegistryPrototype(Realm& realm)
{
}
ThrowCompletionOr<void> FinalizationRegistryPrototype::initialize(Realm& realm)
void FinalizationRegistryPrototype::initialize(Realm& realm)
{
auto& vm = this->vm();
MUST_OR_THROW_OOM(Base::initialize(realm));
Base::initialize(realm);
u8 attr = Attribute::Writable | Attribute::Configurable;
define_native_function(realm, vm.names.cleanupSome, cleanup_some, 0, attr);
@ -27,8 +27,6 @@ ThrowCompletionOr<void> FinalizationRegistryPrototype::initialize(Realm& realm)
// 26.2.3.4 FinalizationRegistry.prototype [ @@toStringTag ], https://tc39.es/ecma262/#sec-finalization-registry.prototype-@@tostringtag
define_direct_property(vm.well_known_symbol_to_string_tag(), PrimitiveString::create(vm, vm.names.FinalizationRegistry.as_string()), Attribute::Configurable);
return {};
}
// @STAGE 2@ FinalizationRegistry.prototype.cleanupSome ( [ callback ] ), https://github.com/tc39/proposal-cleanup-some/blob/master/spec/finalization-registry.html

View file

@ -15,7 +15,7 @@ class FinalizationRegistryPrototype final : public PrototypeObject<FinalizationR
JS_PROTOTYPE_OBJECT(FinalizationRegistryPrototype, FinalizationRegistry, FinalizationRegistry);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~FinalizationRegistryPrototype() override = default;
private:

View file

@ -23,17 +23,15 @@ FunctionConstructor::FunctionConstructor(Realm& realm)
{
}
ThrowCompletionOr<void> FunctionConstructor::initialize(Realm& realm)
void FunctionConstructor::initialize(Realm& realm)
{
auto& vm = this->vm();
MUST_OR_THROW_OOM(NativeFunction::initialize(realm));
Base::initialize(realm);
// 20.2.2.2 Function.prototype, https://tc39.es/ecma262/#sec-function.prototype
define_direct_property(vm.names.prototype, realm.intrinsics().function_prototype(), 0);
define_direct_property(vm.names.length, Value(1), Attribute::Configurable);
return {};
}
// 20.2.1.1.1 CreateDynamicFunction ( constructor, newTarget, kind, args ), https://tc39.es/ecma262/#sec-createdynamicfunction

View file

@ -17,7 +17,7 @@ class FunctionConstructor final : public NativeFunction {
public:
static ThrowCompletionOr<ECMAScriptFunctionObject*> create_dynamic_function(VM&, FunctionObject& constructor, FunctionObject* new_target, FunctionKind kind, MarkedVector<Value> const& args);
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~FunctionConstructor() override = default;
virtual ThrowCompletionOr<Value> call() override;

View file

@ -20,7 +20,6 @@ class FunctionObject : public Object {
public:
virtual ~FunctionObject() = default;
virtual ThrowCompletionOr<void> initialize(Realm&) override { return {}; }
// Table 7: Additional Essential Internal Methods of Function Objects, https://tc39.es/ecma262/#table-additional-essential-internal-methods-of-function-objects

View file

@ -25,10 +25,10 @@ FunctionPrototype::FunctionPrototype(Realm& realm)
{
}
ThrowCompletionOr<void> FunctionPrototype::initialize(Realm& realm)
void FunctionPrototype::initialize(Realm& realm)
{
auto& vm = this->vm();
MUST_OR_THROW_OOM(Base::initialize(realm));
Base::initialize(realm);
u8 attr = Attribute::Writable | Attribute::Configurable;
define_native_function(realm, vm.names.apply, apply, 2, attr);
define_native_function(realm, vm.names.bind, bind, 1, attr);
@ -37,8 +37,6 @@ ThrowCompletionOr<void> FunctionPrototype::initialize(Realm& realm)
define_native_function(realm, vm.well_known_symbol_has_instance(), symbol_has_instance, 1, 0);
define_direct_property(vm.names.length, Value(0), Attribute::Configurable);
define_direct_property(vm.names.name, PrimitiveString::create(vm, String {}), Attribute::Configurable);
return {};
}
ThrowCompletionOr<Value> FunctionPrototype::internal_call(Value, MarkedVector<Value>)

View file

@ -14,7 +14,7 @@ class FunctionPrototype final : public FunctionObject {
JS_OBJECT(FunctionPrototype, FunctionObject);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~FunctionPrototype() override = default;
virtual ThrowCompletionOr<Value> internal_call(Value this_argument, MarkedVector<Value> arguments_list) override;

View file

@ -16,17 +16,15 @@ GeneratorFunctionConstructor::GeneratorFunctionConstructor(Realm& realm)
{
}
ThrowCompletionOr<void> GeneratorFunctionConstructor::initialize(Realm& realm)
void GeneratorFunctionConstructor::initialize(Realm& realm)
{
auto& vm = this->vm();
MUST_OR_THROW_OOM(NativeFunction::initialize(realm));
Base::initialize(realm);
// 27.3.2.1 GeneratorFunction.length, https://tc39.es/ecma262/#sec-generatorfunction.length
define_direct_property(vm.names.length, Value(1), Attribute::Configurable);
// 27.3.2.2 GeneratorFunction.prototype, https://tc39.es/ecma262/#sec-generatorfunction.length
define_direct_property(vm.names.prototype, realm.intrinsics().generator_function_prototype(), 0);
return {};
}
// 27.3.1.1 GeneratorFunction ( p1, p2, … , pn, body ), https://tc39.es/ecma262/#sec-generatorfunction

View file

@ -15,7 +15,7 @@ class GeneratorFunctionConstructor final : public NativeFunction {
JS_OBJECT(GeneratorFunctionConstructor, NativeFunction);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~GeneratorFunctionConstructor() override = default;
virtual ThrowCompletionOr<Value> call() override;

View file

@ -15,17 +15,15 @@ GeneratorFunctionPrototype::GeneratorFunctionPrototype(Realm& realm)
{
}
ThrowCompletionOr<void> GeneratorFunctionPrototype::initialize(Realm& realm)
void GeneratorFunctionPrototype::initialize(Realm& realm)
{
auto& vm = this->vm();
MUST_OR_THROW_OOM(Base::initialize(realm));
Base::initialize(realm);
// 27.3.3.2 GeneratorFunction.prototype.prototype, https://tc39.es/ecma262/#sec-generatorfunction.prototype.prototype
define_direct_property(vm.names.prototype, realm.intrinsics().generator_prototype(), Attribute::Configurable);
// 27.3.3.3 GeneratorFunction.prototype [ @@toStringTag ], https://tc39.es/ecma262/#sec-generatorfunction.prototype-@@tostringtag
define_direct_property(vm.well_known_symbol_to_string_tag(), MUST_OR_THROW_OOM(PrimitiveString::create(vm, "GeneratorFunction"sv)), Attribute::Configurable);
return {};
define_direct_property(vm.well_known_symbol_to_string_tag(), MUST(PrimitiveString::create(vm, "GeneratorFunction"sv)), Attribute::Configurable);
}
}

View file

@ -16,7 +16,7 @@ class GeneratorFunctionPrototype final : public Object {
JS_OBJECT(GeneratorFunctionPrototype, Object);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~GeneratorFunctionPrototype() override = default;
private:

View file

@ -14,19 +14,17 @@ GeneratorPrototype::GeneratorPrototype(Realm& realm)
{
}
ThrowCompletionOr<void> GeneratorPrototype::initialize(Realm& realm)
void GeneratorPrototype::initialize(Realm& realm)
{
auto& vm = this->vm();
MUST_OR_THROW_OOM(Base::initialize(realm));
Base::initialize(realm);
u8 attr = Attribute::Writable | Attribute::Configurable;
define_native_function(realm, vm.names.next, next, 1, attr);
define_native_function(realm, vm.names.return_, return_, 1, attr);
define_native_function(realm, vm.names.throw_, throw_, 1, attr);
// 27.5.1.5 Generator.prototype [ @@toStringTag ], https://tc39.es/ecma262/#sec-generator.prototype-@@tostringtag
define_direct_property(vm.well_known_symbol_to_string_tag(), MUST_OR_THROW_OOM(PrimitiveString::create(vm, "Generator"sv)), Attribute::Configurable);
return {};
define_direct_property(vm.well_known_symbol_to_string_tag(), MUST(PrimitiveString::create(vm, "Generator"sv)), Attribute::Configurable);
}
// 27.5.1.2 Generator.prototype.next ( value ), https://tc39.es/ecma262/#sec-generator.prototype.next

View file

@ -16,7 +16,7 @@ class GeneratorPrototype final : public PrototypeObject<GeneratorPrototype, Gene
JS_PROTOTYPE_OBJECT(GeneratorPrototype, GeneratorObject, Generator);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~GeneratorPrototype() override = default;
private:

View file

@ -194,17 +194,15 @@ Object& set_default_global_bindings(Realm& realm)
return global;
}
ThrowCompletionOr<void> GlobalObject::initialize(Realm& realm)
void GlobalObject::initialize(Realm& realm)
{
MUST_OR_THROW_OOM(Base::initialize(realm));
Base::initialize(realm);
auto& vm = this->vm();
// Non-standard
u8 attr = Attribute::Writable | Attribute::Configurable;
define_native_function(realm, vm.names.gc, gc, 0, attr);
return {};
}
GlobalObject::~GlobalObject() = default;

View file

@ -19,7 +19,7 @@ class GlobalObject : public Object {
friend class Intrinsics;
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~GlobalObject() override;
protected:

View file

@ -22,13 +22,11 @@ CollatorCompareFunction::CollatorCompareFunction(Realm& realm, Collator& collato
{
}
ThrowCompletionOr<void> CollatorCompareFunction::initialize(Realm&)
void CollatorCompareFunction::initialize(Realm&)
{
auto& vm = this->vm();
define_direct_property(vm.names.length, Value(2), Attribute::Configurable);
define_direct_property(vm.names.name, PrimitiveString::create(vm, String {}), Attribute::Configurable);
return {};
}
// 10.3.3.2 CompareStrings ( collator, x, y ), https://tc39.es/ecma402/#sec-collator-comparestrings

View file

@ -16,7 +16,7 @@ class CollatorCompareFunction : public NativeFunction {
public:
static NonnullGCPtr<CollatorCompareFunction> create(Realm&, Collator&);
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~CollatorCompareFunction() override = default;
virtual ThrowCompletionOr<Value> call() override;

View file

@ -135,9 +135,9 @@ CollatorConstructor::CollatorConstructor(Realm& realm)
{
}
ThrowCompletionOr<void> CollatorConstructor::initialize(Realm& realm)
void CollatorConstructor::initialize(Realm& realm)
{
MUST_OR_THROW_OOM(NativeFunction::initialize(realm));
Base::initialize(realm);
auto& vm = this->vm();
@ -147,8 +147,6 @@ ThrowCompletionOr<void> CollatorConstructor::initialize(Realm& realm)
u8 attr = Attribute::Writable | Attribute::Configurable;
define_native_function(realm, vm.names.supportedLocalesOf, supported_locales_of, 1, attr);
return {};
}
// 10.1.1 Intl.Collator ( [ locales [ , options ] ] ), https://tc39.es/ecma402/#sec-intl.collator

View file

@ -14,7 +14,7 @@ class CollatorConstructor final : public NativeFunction {
JS_OBJECT(CollatorConstructor, NativeFunction);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~CollatorConstructor() override = default;
virtual ThrowCompletionOr<Value> call() override;

View file

@ -17,20 +17,18 @@ CollatorPrototype::CollatorPrototype(Realm& realm)
{
}
ThrowCompletionOr<void> CollatorPrototype::initialize(Realm& realm)
void CollatorPrototype::initialize(Realm& realm)
{
MUST_OR_THROW_OOM(Object::initialize(realm));
Base::initialize(realm);
auto& vm = this->vm();
// 10.3.2 Intl.Collator.prototype [ @@toStringTag ], https://tc39.es/ecma402/#sec-intl.collator.prototype-@@tostringtag
define_direct_property(vm.well_known_symbol_to_string_tag(), MUST_OR_THROW_OOM(PrimitiveString::create(vm, "Intl.Collator"sv)), Attribute::Configurable);
define_direct_property(vm.well_known_symbol_to_string_tag(), MUST(PrimitiveString::create(vm, "Intl.Collator"sv)), Attribute::Configurable);
u8 attr = Attribute::Writable | Attribute::Configurable;
define_native_accessor(realm, vm.names.compare, compare_getter, {}, attr);
define_native_function(realm, vm.names.resolvedOptions, resolved_options, 0, attr);
return {};
}
// 10.3.3 get Intl.Collator.prototype.compare, https://tc39.es/ecma402/#sec-intl.collator.prototype.compare

View file

@ -15,7 +15,7 @@ class CollatorPrototype final : public PrototypeObject<CollatorPrototype, Collat
JS_PROTOTYPE_OBJECT(CollatorPrototype, Collator, Collator);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~CollatorPrototype() override = default;
private:

View file

@ -23,9 +23,9 @@ DateTimeFormatConstructor::DateTimeFormatConstructor(Realm& realm)
{
}
ThrowCompletionOr<void> DateTimeFormatConstructor::initialize(Realm& realm)
void DateTimeFormatConstructor::initialize(Realm& realm)
{
MUST_OR_THROW_OOM(NativeFunction::initialize(realm));
Base::initialize(realm);
auto& vm = this->vm();
@ -36,8 +36,6 @@ ThrowCompletionOr<void> DateTimeFormatConstructor::initialize(Realm& realm)
define_native_function(realm, vm.names.supportedLocalesOf, supported_locales_of, 1, attr);
define_direct_property(vm.names.length, Value(0), Attribute::Configurable);
return {};
}
// 11.1.1 Intl.DateTimeFormat ( [ locales [ , options ] ] ), https://tc39.es/ecma402/#sec-intl.datetimeformat

View file

@ -14,7 +14,7 @@ class DateTimeFormatConstructor final : public NativeFunction {
JS_OBJECT(DateTimeFormatConstructor, NativeFunction);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~DateTimeFormatConstructor() override = default;
virtual ThrowCompletionOr<Value> call() override;

View file

@ -25,15 +25,13 @@ DateTimeFormatFunction::DateTimeFormatFunction(DateTimeFormat& date_time_format,
{
}
ThrowCompletionOr<void> DateTimeFormatFunction::initialize(Realm& realm)
void DateTimeFormatFunction::initialize(Realm& realm)
{
auto& vm = this->vm();
MUST_OR_THROW_OOM(Base::initialize(realm));
Base::initialize(realm);
define_direct_property(vm.names.length, Value(1), Attribute::Configurable);
define_direct_property(vm.names.name, PrimitiveString::create(vm, String {}), Attribute::Configurable);
return {};
}
ThrowCompletionOr<Value> DateTimeFormatFunction::call()

View file

@ -19,7 +19,7 @@ public:
static NonnullGCPtr<DateTimeFormatFunction> create(Realm&, DateTimeFormat&);
virtual ~DateTimeFormatFunction() override = default;
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ThrowCompletionOr<Value> call() override;

View file

@ -19,14 +19,14 @@ DateTimeFormatPrototype::DateTimeFormatPrototype(Realm& realm)
{
}
ThrowCompletionOr<void> DateTimeFormatPrototype::initialize(Realm& realm)
void DateTimeFormatPrototype::initialize(Realm& realm)
{
MUST_OR_THROW_OOM(Base::initialize(realm));
Base::initialize(realm);
auto& vm = this->vm();
// 11.3.2 Intl.DateTimeFormat.prototype [ @@toStringTag ], https://tc39.es/ecma402/#sec-intl.datetimeformat.prototype-@@tostringtag
define_direct_property(vm.well_known_symbol_to_string_tag(), MUST_OR_THROW_OOM(PrimitiveString::create(vm, "Intl.DateTimeFormat"sv)), Attribute::Configurable);
define_direct_property(vm.well_known_symbol_to_string_tag(), MUST(PrimitiveString::create(vm, "Intl.DateTimeFormat"sv)), Attribute::Configurable);
define_native_accessor(realm, vm.names.format, format, nullptr, Attribute::Configurable);
@ -35,8 +35,6 @@ ThrowCompletionOr<void> DateTimeFormatPrototype::initialize(Realm& realm)
define_native_function(realm, vm.names.formatRange, format_range, 2, attr);
define_native_function(realm, vm.names.formatRangeToParts, format_range_to_parts, 2, attr);
define_native_function(realm, vm.names.resolvedOptions, resolved_options, 0, attr);
return {};
}
// 11.3.3 get Intl.DateTimeFormat.prototype.format, https://tc39.es/ecma402/#sec-intl.datetimeformat.prototype.format

View file

@ -15,7 +15,7 @@ class DateTimeFormatPrototype final : public PrototypeObject<DateTimeFormatProto
JS_PROTOTYPE_OBJECT(DateTimeFormatPrototype, DateTimeFormat, Intl.DateTimeFormat);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~DateTimeFormatPrototype() override = default;
private:

View file

@ -21,9 +21,9 @@ DisplayNamesConstructor::DisplayNamesConstructor(Realm& realm)
{
}
ThrowCompletionOr<void> DisplayNamesConstructor::initialize(Realm& realm)
void DisplayNamesConstructor::initialize(Realm& realm)
{
MUST_OR_THROW_OOM(NativeFunction::initialize(realm));
Base::initialize(realm);
auto& vm = this->vm();
@ -34,8 +34,6 @@ ThrowCompletionOr<void> DisplayNamesConstructor::initialize(Realm& realm)
define_native_function(realm, vm.names.supportedLocalesOf, supported_locales_of, 1, attr);
define_direct_property(vm.names.length, Value(2), Attribute::Configurable);
return {};
}
// 12.1.1 Intl.DisplayNames ( locales, options ), https://tc39.es/ecma402/#sec-Intl.DisplayNames

View file

@ -14,7 +14,7 @@ class DisplayNamesConstructor final : public NativeFunction {
JS_OBJECT(DisplayNamesConstructor, NativeFunction);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~DisplayNamesConstructor() override = default;
virtual ThrowCompletionOr<Value> call() override;

View file

@ -19,20 +19,18 @@ DisplayNamesPrototype::DisplayNamesPrototype(Realm& realm)
{
}
ThrowCompletionOr<void> DisplayNamesPrototype::initialize(Realm& realm)
void DisplayNamesPrototype::initialize(Realm& realm)
{
MUST_OR_THROW_OOM(Base::initialize(realm));
Base::initialize(realm);
auto& vm = this->vm();
// 12.3.2 Intl.DisplayNames.prototype[ @@toStringTag ], https://tc39.es/ecma402/#sec-Intl.DisplayNames.prototype-@@tostringtag
define_direct_property(vm.well_known_symbol_to_string_tag(), MUST_OR_THROW_OOM(PrimitiveString::create(vm, "Intl.DisplayNames"sv)), Attribute::Configurable);
define_direct_property(vm.well_known_symbol_to_string_tag(), MUST(PrimitiveString::create(vm, "Intl.DisplayNames"sv)), Attribute::Configurable);
u8 attr = Attribute::Writable | Attribute::Configurable;
define_native_function(realm, vm.names.of, of, 1, attr);
define_native_function(realm, vm.names.resolvedOptions, resolved_options, 0, attr);
return {};
}
// 12.3.3 Intl.DisplayNames.prototype.of ( code ), https://tc39.es/ecma402/#sec-Intl.DisplayNames.prototype.of

View file

@ -15,7 +15,7 @@ class DisplayNamesPrototype final : public PrototypeObject<DisplayNamesPrototype
JS_PROTOTYPE_OBJECT(DisplayNamesPrototype, DisplayNames, Intl.DisplayNames);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~DisplayNamesPrototype() override = default;
private:

View file

@ -20,9 +20,9 @@ DurationFormatConstructor::DurationFormatConstructor(Realm& realm)
{
}
ThrowCompletionOr<void> DurationFormatConstructor::initialize(Realm& realm)
void DurationFormatConstructor::initialize(Realm& realm)
{
MUST_OR_THROW_OOM(NativeFunction::initialize(realm));
Base::initialize(realm);
auto& vm = this->vm();
@ -32,8 +32,6 @@ ThrowCompletionOr<void> DurationFormatConstructor::initialize(Realm& realm)
u8 attr = Attribute::Writable | Attribute::Configurable;
define_native_function(realm, vm.names.supportedLocalesOf, supported_locales_of, 1, attr);
return {};
}
// 1.2.1 Intl.DurationFormat ( [ locales [ , options ] ] ), https://tc39.es/proposal-intl-duration-format/#sec-Intl.DurationFormat

View file

@ -14,7 +14,7 @@ class DurationFormatConstructor final : public NativeFunction {
JS_OBJECT(DurationFormatConstructor, NativeFunction);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~DurationFormatConstructor() override = default;
virtual ThrowCompletionOr<Value> call() override;

View file

@ -18,21 +18,19 @@ DurationFormatPrototype::DurationFormatPrototype(Realm& realm)
{
}
ThrowCompletionOr<void> DurationFormatPrototype::initialize(Realm& realm)
void DurationFormatPrototype::initialize(Realm& realm)
{
MUST_OR_THROW_OOM(Base::initialize(realm));
Base::initialize(realm);
auto& vm = this->vm();
// 1.4.2 Intl.DurationFormat.prototype [ @@toStringTag ], https://tc39.es/proposal-intl-duration-format/#sec-Intl.DurationFormat.prototype-@@tostringtag
define_direct_property(vm.well_known_symbol_to_string_tag(), MUST_OR_THROW_OOM(PrimitiveString::create(vm, "Intl.DurationFormat"sv)), Attribute::Configurable);
define_direct_property(vm.well_known_symbol_to_string_tag(), MUST(PrimitiveString::create(vm, "Intl.DurationFormat"sv)), Attribute::Configurable);
u8 attr = Attribute::Writable | Attribute::Configurable;
define_native_function(realm, vm.names.format, format, 1, attr);
define_native_function(realm, vm.names.formatToParts, format_to_parts, 1, attr);
define_native_function(realm, vm.names.resolvedOptions, resolved_options, 0, attr);
return {};
}
// 1.4.3 Intl.DurationFormat.prototype.format ( duration ), https://tc39.es/proposal-intl-duration-format/#sec-Intl.DurationFormat.prototype.format

View file

@ -15,7 +15,7 @@ class DurationFormatPrototype final : public PrototypeObject<DurationFormatProto
JS_PROTOTYPE_OBJECT(DurationFormatPrototype, DurationFormat, Intl.DurationFormat);
public:
virtual ThrowCompletionOr<void> initialize(Realm&) override;
virtual void initialize(Realm&) override;
virtual ~DurationFormatPrototype() override = default;
private:

View file

@ -32,14 +32,14 @@ Intl::Intl(Realm& realm)
{
}
ThrowCompletionOr<void> Intl::initialize(Realm& realm)
void Intl::initialize(Realm& realm)
{
MUST_OR_THROW_OOM(Object::initialize(realm));
Base::initialize(realm);
auto& vm = this->vm();
// 8.1.1 Intl[ @@toStringTag ], https://tc39.es/ecma402/#sec-Intl-toStringTag
define_direct_property(vm.well_known_symbol_to_string_tag(), MUST_OR_THROW_OOM(PrimitiveString::create(vm, "Intl"sv)), Attribute::Configurable);
define_direct_property(vm.well_known_symbol_to_string_tag(), MUST(PrimitiveString::create(vm, "Intl"sv)), Attribute::Configurable);
u8 attr = Attribute::Writable | Attribute::Configurable;
define_intrinsic_accessor(vm.names.Collator, attr, [](auto& realm) -> Value { return realm.intrinsics().intl_collator_constructor(); });
@ -55,8 +55,6 @@ ThrowCompletionOr<void> Intl::initialize(Realm& realm)
define_native_function(realm, vm.names.getCanonicalLocales, get_canonical_locales, 1, attr);
define_native_function(realm, vm.names.supportedValuesOf, supported_values_of, 1, attr);
return {};
}
// 8.3.1 Intl.getCanonicalLocales ( locales ), https://tc39.es/ecma402/#sec-intl.getcanonicallocales

Some files were not shown because too many files have changed in this diff Show more