mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 19:58:11 +00:00
LibJS: Don't use Handle<Value> for JS::Object private fields
There's no reason to use handles here, we can just mark private element values from objects that store them.
This commit is contained in:
parent
6a4e3d9002
commit
463931384d
4 changed files with 22 additions and 14 deletions
|
@ -201,13 +201,13 @@ ThrowCompletionOr<ClassElement::ClassValue> ClassMethod::class_element_evaluatio
|
|||
switch (kind()) {
|
||||
case Kind::Method:
|
||||
set_function_name();
|
||||
return ClassValue { PrivateElement { private_name, PrivateElement::Kind::Method, make_handle(method_value) } };
|
||||
return ClassValue { PrivateElement { private_name, PrivateElement::Kind::Method, method_value } };
|
||||
case Kind::Getter:
|
||||
set_function_name("get");
|
||||
return ClassValue { PrivateElement { private_name, PrivateElement::Kind::Accessor, make_handle(Value(Accessor::create(vm, &method_function, nullptr))) } };
|
||||
return ClassValue { PrivateElement { private_name, PrivateElement::Kind::Accessor, Value(Accessor::create(vm, &method_function, nullptr)) } };
|
||||
case Kind::Setter:
|
||||
set_function_name("set");
|
||||
return ClassValue { PrivateElement { private_name, PrivateElement::Kind::Accessor, make_handle(Value(Accessor::create(vm, nullptr, &method_function))) } };
|
||||
return ClassValue { PrivateElement { private_name, PrivateElement::Kind::Accessor, Value(Accessor::create(vm, nullptr, &method_function)) } };
|
||||
default:
|
||||
VERIFY_NOT_REACHED();
|
||||
}
|
||||
|
@ -392,11 +392,11 @@ ThrowCompletionOr<ECMAScriptFunctionObject*> ClassExpression::create_class_const
|
|||
if (existing.key == private_element.key) {
|
||||
VERIFY(existing.kind == PrivateElement::Kind::Accessor);
|
||||
VERIFY(private_element.kind == PrivateElement::Kind::Accessor);
|
||||
auto& accessor = private_element.value.value().as_accessor();
|
||||
auto& accessor = private_element.value.as_accessor();
|
||||
if (!accessor.getter())
|
||||
existing.value.value().as_accessor().set_setter(accessor.setter());
|
||||
existing.value.as_accessor().set_setter(accessor.setter());
|
||||
else
|
||||
existing.value.value().as_accessor().set_getter(accessor.getter());
|
||||
existing.value.as_accessor().set_getter(accessor.getter());
|
||||
added_to_existing = true;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue