mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-09-06 17:48:37 +00:00
LibJS+LibWeb: Use realm.create<T> instead of heap.allocate<T>
The main motivation behind this is to remove JS specifics of the Realm from the implementation of the Heap. As a side effect of this change, this is a bit nicer to read than the previous approach, and in my opinion, also makes it a little more clear that this method is specific to a JavaScript Realm.
This commit is contained in:
parent
2a5dbedad4
commit
9b79a686eb
Notes:
github-actions[bot]
2024-11-13 21:52:48 +00:00
Author: https://github.com/shannonbooth
Commit: 9b79a686eb
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/2322
Reviewed-by: https://github.com/gmta
326 changed files with 697 additions and 714 deletions
|
@ -14,6 +14,7 @@
|
|||
#include <LibJS/Bytecode/Builtins.h>
|
||||
#include <LibJS/Heap/Cell.h>
|
||||
#include <LibJS/Heap/CellAllocator.h>
|
||||
#include <LibJS/Heap/Heap.h>
|
||||
#include <LibJS/Runtime/Intrinsics.h>
|
||||
#include <LibJS/Runtime/Value.h>
|
||||
|
||||
|
@ -31,6 +32,14 @@ public:
|
|||
virtual void visit_edges(Cell::Visitor&) { }
|
||||
};
|
||||
|
||||
template<typename T, typename... Args>
|
||||
NonnullGCPtr<T> create(Args&&... args)
|
||||
{
|
||||
auto object = heap().allocate_without_realm<T>(forward<Args>(args)...);
|
||||
static_cast<Cell*>(object)->initialize(*this);
|
||||
return *object;
|
||||
}
|
||||
|
||||
static ThrowCompletionOr<NonnullOwnPtr<ExecutionContext>> initialize_host_defined_realm(VM&, Function<Object*(Realm&)> create_global_object, Function<Object*(Realm&)> create_global_this_value);
|
||||
|
||||
[[nodiscard]] Object& global_object() const { return *m_global_object; }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue