mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-13 11:39:43 +00:00
LibWeb: Add Wasm Web-API streaming compilation and instantiation
This requires fixing up the "parameter is a promise" handling in the IDL generator.
This commit is contained in:
parent
881a270e58
commit
36feebb1e7
Notes:
github-actions[bot]
2024-11-01 17:43:14 +00:00
Author: https://github.com/ADKaster
Commit: 36feebb1e7
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/1982
7 changed files with 250 additions and 9 deletions
|
@ -669,15 +669,12 @@ static void generate_to_cpp(SourceGenerator& generator, ParameterType& parameter
|
|||
} else if (parameter.type->name() == "Promise") {
|
||||
// https://webidl.spec.whatwg.org/#js-promise
|
||||
scoped_generator.append(R"~~~(
|
||||
if (!@js_name@@js_suffix@.is_cell() || !is<JS::PromiseCapability>(@js_name@@js_suffix@.as_cell())) {
|
||||
// 1. Let promiseCapability be ? NewPromiseCapability(%Promise%).
|
||||
auto promise_capability = TRY(JS::new_promise_capability(vm, realm.intrinsics().promise_constructor()));
|
||||
// 2. Perform ? Call(promiseCapability.[[Resolve]], undefined, « V »).
|
||||
TRY(JS::call(vm, *promise_capability->resolve(), JS::js_undefined(), @js_name@@js_suffix@));
|
||||
// 3. Return promiseCapability.
|
||||
@js_name@@js_suffix@ = promise_capability;
|
||||
}
|
||||
auto @cpp_name@ = JS::make_handle(static_cast<JS::PromiseCapability&>(@js_name@@js_suffix@.as_cell()));
|
||||
// 1. Let promiseCapability be ? NewPromiseCapability(%Promise%).
|
||||
auto promise_capability = TRY(JS::new_promise_capability(vm, realm.intrinsics().promise_constructor()));
|
||||
// 2. Perform ? Call(promiseCapability.[[Resolve]], undefined, « V »).
|
||||
TRY(JS::call(vm, *promise_capability->resolve(), JS::js_undefined(), @js_name@@js_suffix@));
|
||||
// 3. Return promiseCapability.
|
||||
auto @cpp_name@ = JS::make_handle(promise_capability);
|
||||
)~~~");
|
||||
} else if (parameter.type->name() == "object") {
|
||||
if (parameter.type->is_nullable()) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue