mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-28 11:49:44 +00:00
LibWeb: Support creation of shared memory in WebAssembly API
Add support for shared memory creation in WebAssembly memory API. This API is needed for WPT tests that use shared array buffers. Import related WPT tests.
This commit is contained in:
parent
6ec06a01a2
commit
b03138cbff
Notes:
github-actions[bot]
2024-12-08 21:11:34 +00:00
Author: https://github.com/zetslief
Commit: b03138cbff
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/2828
Reviewed-by: https://github.com/ADKaster
Reviewed-by: https://github.com/alimpfard ✅
13 changed files with 516 additions and 16 deletions
|
@ -20,12 +20,18 @@ namespace Web::WebAssembly {
|
|||
struct MemoryDescriptor {
|
||||
u32 initial { 0 };
|
||||
Optional<u32> maximum;
|
||||
Optional<bool> shared;
|
||||
};
|
||||
|
||||
class Memory : public Bindings::PlatformObject {
|
||||
WEB_PLATFORM_OBJECT(Memory, Bindings::PlatformObject);
|
||||
GC_DECLARE_ALLOCATOR(Memory);
|
||||
|
||||
enum class Shared {
|
||||
No,
|
||||
Yes,
|
||||
};
|
||||
|
||||
public:
|
||||
static WebIDL::ExceptionOr<GC::Ref<Memory>> construct_impl(JS::Realm&, MemoryDescriptor& descriptor);
|
||||
|
||||
|
@ -35,15 +41,16 @@ public:
|
|||
Wasm::MemoryAddress address() const { return m_address; }
|
||||
|
||||
private:
|
||||
Memory(JS::Realm&, Wasm::MemoryAddress);
|
||||
Memory(JS::Realm&, Wasm::MemoryAddress, Shared shared);
|
||||
|
||||
virtual void initialize(JS::Realm&) override;
|
||||
virtual void visit_edges(Visitor&) override;
|
||||
|
||||
WebIDL::ExceptionOr<void> reset_the_memory_buffer();
|
||||
static WebIDL::ExceptionOr<GC::Ref<JS::ArrayBuffer>> create_a_memory_buffer(JS::VM&, JS::Realm&, Wasm::MemoryAddress);
|
||||
static WebIDL::ExceptionOr<GC::Ref<JS::ArrayBuffer>> create_a_fixed_length_memory_buffer(JS::VM&, JS::Realm&, Wasm::MemoryAddress, Shared shared);
|
||||
|
||||
Wasm::MemoryAddress m_address;
|
||||
Shared m_shared { Shared::No };
|
||||
mutable GC::Ptr<JS::ArrayBuffer> m_buffer;
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue