mirror of
https://github.com/LadybirdBrowser/ladybird
synced 2026-04-27 18:17:22 +02:00
LibJS: Make SharedFunctionInstanceData GC-allocated
This commit is contained in:
committed by
Andreas Kling
parent
b77f658c83
commit
3a38040c82
Notes:
github-actions[bot]
2025-10-27 20:15:53 +00:00
Author: https://github.com/awesomekling Commit: https://github.com/LadybirdBrowser/ladybird/commit/3a38040c825 Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/6604
@@ -34,8 +34,13 @@ enum class ConstructorKind : u8 {
|
||||
Derived,
|
||||
};
|
||||
|
||||
class SharedFunctionInstanceData : public RefCounted<SharedFunctionInstanceData> {
|
||||
class SharedFunctionInstanceData final : public GC::Cell {
|
||||
GC_CELL(SharedFunctionInstanceData, GC::Cell);
|
||||
GC_DECLARE_ALLOCATOR(SharedFunctionInstanceData);
|
||||
|
||||
public:
|
||||
virtual ~SharedFunctionInstanceData() override;
|
||||
|
||||
SharedFunctionInstanceData(
|
||||
VM& vm,
|
||||
FunctionKind,
|
||||
@@ -96,6 +101,9 @@ public:
|
||||
Variant<PropertyKey, PrivateName, Empty> m_class_field_initializer_name; // [[ClassFieldInitializerName]]
|
||||
ConstructorKind m_constructor_kind : 1 { ConstructorKind::Base }; // [[ConstructorKind]]
|
||||
bool m_is_class_constructor : 1 { false }; // [[IsClassConstructor]]
|
||||
|
||||
private:
|
||||
virtual void visit_edges(Visitor&) override;
|
||||
};
|
||||
|
||||
// 10.2 ECMAScript Function Objects, https://tc39.es/ecma262/#sec-ecmascript-function-objects
|
||||
@@ -184,7 +192,7 @@ public:
|
||||
|
||||
private:
|
||||
ECMAScriptFunctionObject(
|
||||
NonnullRefPtr<SharedFunctionInstanceData>,
|
||||
GC::Ref<SharedFunctionInstanceData>,
|
||||
Environment* parent_environment,
|
||||
PrivateEnvironment* private_environment,
|
||||
Object& prototype);
|
||||
@@ -202,7 +210,7 @@ private:
|
||||
void prepare_for_ordinary_call(VM&, ExecutionContext& callee_context, Object* new_target);
|
||||
void ordinary_call_bind_this(VM&, ExecutionContext&, Value this_argument);
|
||||
|
||||
NonnullRefPtr<SharedFunctionInstanceData> m_shared_data;
|
||||
GC::Ref<SharedFunctionInstanceData> m_shared_data;
|
||||
|
||||
GC::Ptr<PrimitiveString> m_name_string;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user