summaryrefslogtreecommitdiff
path: root/Userland/Libraries
diff options
context:
space:
mode:
authorLinus Groh <mail@linusgroh.de>2022-12-13 20:49:50 +0000
committerLinus Groh <mail@linusgroh.de>2022-12-14 09:59:45 +0000
commit049e99b5f05943e71a067f1f41f2daebe9ceee82 (patch)
tree9892a6c50e219ce9ba72ba65ee98cbf05dc46cd3 /Userland/Libraries
parent337c55a8937d68fa7c9bc686fce341c8301e96de (diff)
downloadserenity-049e99b5f05943e71a067f1f41f2daebe9ceee82.zip
LibJS: Convert StringObject::create() to NonnullGCPtr
Diffstat (limited to 'Userland/Libraries')
-rw-r--r--Userland/Libraries/LibJS/Runtime/StringConstructor.cpp2
-rw-r--r--Userland/Libraries/LibJS/Runtime/StringObject.cpp4
-rw-r--r--Userland/Libraries/LibJS/Runtime/StringObject.h2
-rw-r--r--Userland/Libraries/LibJS/Runtime/Value.cpp2
4 files changed, 5 insertions, 5 deletions
diff --git a/Userland/Libraries/LibJS/Runtime/StringConstructor.cpp b/Userland/Libraries/LibJS/Runtime/StringConstructor.cpp
index ee38bd04a2..6a31626521 100644
--- a/Userland/Libraries/LibJS/Runtime/StringConstructor.cpp
+++ b/Userland/Libraries/LibJS/Runtime/StringConstructor.cpp
@@ -61,7 +61,7 @@ ThrowCompletionOr<Object*> StringConstructor::construct(FunctionObject& new_targ
else
primitive_string = TRY(vm.argument(0).to_primitive_string(vm));
auto* prototype = TRY(get_prototype_from_constructor(vm, new_target, &Intrinsics::string_prototype));
- return StringObject::create(realm, *primitive_string, *prototype);
+ return StringObject::create(realm, *primitive_string, *prototype).ptr();
}
// 22.1.2.4 String.raw ( template, ...substitutions ), https://tc39.es/ecma262/#sec-string.raw
diff --git a/Userland/Libraries/LibJS/Runtime/StringObject.cpp b/Userland/Libraries/LibJS/Runtime/StringObject.cpp
index 2ebd852bd8..9ac059d875 100644
--- a/Userland/Libraries/LibJS/Runtime/StringObject.cpp
+++ b/Userland/Libraries/LibJS/Runtime/StringObject.cpp
@@ -15,9 +15,9 @@
namespace JS {
// 10.4.3.4 StringCreate ( value, prototype ), https://tc39.es/ecma262/#sec-stringcreate
-StringObject* StringObject::create(Realm& realm, PrimitiveString& primitive_string, Object& prototype)
+NonnullGCPtr<StringObject> StringObject::create(Realm& realm, PrimitiveString& primitive_string, Object& prototype)
{
- return realm.heap().allocate<StringObject>(realm, primitive_string, prototype);
+ return *realm.heap().allocate<StringObject>(realm, primitive_string, prototype);
}
StringObject::StringObject(PrimitiveString& string, Object& prototype)
diff --git a/Userland/Libraries/LibJS/Runtime/StringObject.h b/Userland/Libraries/LibJS/Runtime/StringObject.h
index 4fc0fb29d2..5bbae2eaa4 100644
--- a/Userland/Libraries/LibJS/Runtime/StringObject.h
+++ b/Userland/Libraries/LibJS/Runtime/StringObject.h
@@ -14,7 +14,7 @@ class StringObject : public Object {
JS_OBJECT(StringObject, Object);
public:
- static StringObject* create(Realm&, PrimitiveString&, Object& prototype);
+ static NonnullGCPtr<StringObject> create(Realm&, PrimitiveString&, Object& prototype);
virtual void initialize(Realm&) override;
virtual ~StringObject() override = default;
diff --git a/Userland/Libraries/LibJS/Runtime/Value.cpp b/Userland/Libraries/LibJS/Runtime/Value.cpp
index e269df0b15..572ee5e368 100644
--- a/Userland/Libraries/LibJS/Runtime/Value.cpp
+++ b/Userland/Libraries/LibJS/Runtime/Value.cpp
@@ -540,7 +540,7 @@ ThrowCompletionOr<Object*> Value::to_object(VM& vm) const
// String
case STRING_TAG:
// Return a new String object whose [[StringData]] internal slot is set to argument. See 22.1 for a description of String objects.
- return StringObject::create(realm, const_cast<JS::PrimitiveString&>(as_string()), *realm.intrinsics().string_prototype());
+ return StringObject::create(realm, const_cast<JS::PrimitiveString&>(as_string()), *realm.intrinsics().string_prototype()).ptr();
// Symbol
case SYMBOL_TAG:
// Return a new Symbol object whose [[SymbolData]] internal slot is set to argument. See 20.4 for a description of Symbol objects.