mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 04:47:35 +00:00
LibJS: Make PromiseCapability GC-allocated
A struct with three raw pointers to other GC'd types is a pretty big liability, let's just turn this into a Cell itself. This comes with the additional benefit of being able to capture it in a lambda effortlessly, without having to create handles for individual members.
This commit is contained in:
parent
0585029c30
commit
fc9d587e39
29 changed files with 243 additions and 217 deletions
|
@ -51,13 +51,13 @@ public:
|
|||
virtual ThrowCompletionOr<Value> call() override;
|
||||
|
||||
protected:
|
||||
explicit PromiseResolvingElementFunction(size_t, PromiseValueList&, PromiseCapability, RemainingElements&, Object& prototype);
|
||||
explicit PromiseResolvingElementFunction(size_t, PromiseValueList&, NonnullGCPtr<PromiseCapability>, RemainingElements&, Object& prototype);
|
||||
|
||||
virtual ThrowCompletionOr<Value> resolve_element() = 0;
|
||||
|
||||
size_t m_index { 0 };
|
||||
PromiseValueList& m_values;
|
||||
PromiseCapability m_capability;
|
||||
NonnullGCPtr<PromiseCapability> m_capability;
|
||||
RemainingElements& m_remaining_elements;
|
||||
|
||||
private:
|
||||
|
@ -71,12 +71,12 @@ class PromiseAllResolveElementFunction final : public PromiseResolvingElementFun
|
|||
JS_OBJECT(PromiseResolvingFunction, NativeFunction);
|
||||
|
||||
public:
|
||||
static PromiseAllResolveElementFunction* create(Realm&, size_t, PromiseValueList&, PromiseCapability, RemainingElements&);
|
||||
static PromiseAllResolveElementFunction* create(Realm&, size_t, PromiseValueList&, NonnullGCPtr<PromiseCapability>, RemainingElements&);
|
||||
|
||||
virtual ~PromiseAllResolveElementFunction() override = default;
|
||||
|
||||
private:
|
||||
explicit PromiseAllResolveElementFunction(size_t, PromiseValueList&, PromiseCapability, RemainingElements&, Object& prototype);
|
||||
explicit PromiseAllResolveElementFunction(size_t, PromiseValueList&, NonnullGCPtr<PromiseCapability>, RemainingElements&, Object& prototype);
|
||||
|
||||
virtual ThrowCompletionOr<Value> resolve_element() override;
|
||||
};
|
||||
|
@ -86,12 +86,12 @@ class PromiseAllSettledResolveElementFunction final : public PromiseResolvingEle
|
|||
JS_OBJECT(PromiseResolvingFunction, NativeFunction);
|
||||
|
||||
public:
|
||||
static PromiseAllSettledResolveElementFunction* create(Realm&, size_t, PromiseValueList&, PromiseCapability, RemainingElements&);
|
||||
static PromiseAllSettledResolveElementFunction* create(Realm&, size_t, PromiseValueList&, NonnullGCPtr<PromiseCapability>, RemainingElements&);
|
||||
|
||||
virtual ~PromiseAllSettledResolveElementFunction() override = default;
|
||||
|
||||
private:
|
||||
explicit PromiseAllSettledResolveElementFunction(size_t, PromiseValueList&, PromiseCapability, RemainingElements&, Object& prototype);
|
||||
explicit PromiseAllSettledResolveElementFunction(size_t, PromiseValueList&, NonnullGCPtr<PromiseCapability>, RemainingElements&, Object& prototype);
|
||||
|
||||
virtual ThrowCompletionOr<Value> resolve_element() override;
|
||||
};
|
||||
|
@ -101,12 +101,12 @@ class PromiseAllSettledRejectElementFunction final : public PromiseResolvingElem
|
|||
JS_OBJECT(PromiseResolvingFunction, PromiseResolvingElementFunction);
|
||||
|
||||
public:
|
||||
static PromiseAllSettledRejectElementFunction* create(Realm&, size_t, PromiseValueList&, PromiseCapability, RemainingElements&);
|
||||
static PromiseAllSettledRejectElementFunction* create(Realm&, size_t, PromiseValueList&, NonnullGCPtr<PromiseCapability>, RemainingElements&);
|
||||
|
||||
virtual ~PromiseAllSettledRejectElementFunction() override = default;
|
||||
|
||||
private:
|
||||
explicit PromiseAllSettledRejectElementFunction(size_t, PromiseValueList&, PromiseCapability, RemainingElements&, Object& prototype);
|
||||
explicit PromiseAllSettledRejectElementFunction(size_t, PromiseValueList&, NonnullGCPtr<PromiseCapability>, RemainingElements&, Object& prototype);
|
||||
|
||||
virtual ThrowCompletionOr<Value> resolve_element() override;
|
||||
};
|
||||
|
@ -116,12 +116,12 @@ class PromiseAnyRejectElementFunction final : public PromiseResolvingElementFunc
|
|||
JS_OBJECT(PromiseResolvingFunction, PromiseResolvingElementFunction);
|
||||
|
||||
public:
|
||||
static PromiseAnyRejectElementFunction* create(Realm&, size_t, PromiseValueList&, PromiseCapability, RemainingElements&);
|
||||
static PromiseAnyRejectElementFunction* create(Realm&, size_t, PromiseValueList&, NonnullGCPtr<PromiseCapability>, RemainingElements&);
|
||||
|
||||
virtual ~PromiseAnyRejectElementFunction() override = default;
|
||||
|
||||
private:
|
||||
explicit PromiseAnyRejectElementFunction(size_t, PromiseValueList&, PromiseCapability, RemainingElements&, Object& prototype);
|
||||
explicit PromiseAnyRejectElementFunction(size_t, PromiseValueList&, NonnullGCPtr<PromiseCapability>, RemainingElements&, Object& prototype);
|
||||
|
||||
virtual ThrowCompletionOr<Value> resolve_element() override;
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue