Index: src/runtime/runtime-test.cc |
diff --git a/src/runtime/runtime-test.cc b/src/runtime/runtime-test.cc |
index 3270055caba6c57eccc9f13a4be31a38ffe7d50a..95bc30d9093cb5dba9d90efbdaed20cfe5a5e691 100644 |
--- a/src/runtime/runtime-test.cc |
+++ b/src/runtime/runtime-test.cc |
@@ -111,6 +111,15 @@ bool WasmInstantiateOverride(const v8::FunctionCallbackInfo<v8::Value>& args) { |
return true; |
} |
+bool GetWasmFromResolvedPromise( |
+ const v8::FunctionCallbackInfo<v8::Value>& args) { |
+ CHECK(args.Length() == 1); |
+ v8::Local<v8::Promise> promise = v8::Local<v8::Promise>::Cast(args[0]); |
+ CHECK(promise->State() == v8::Promise::PromiseState::kFulfilled); |
+ args.GetReturnValue().Set(promise); |
+ return true; |
+} |
+ |
} // namespace |
namespace v8 { |
@@ -445,6 +454,24 @@ RUNTIME_FUNCTION(Runtime_ClearFunctionFeedback) { |
return isolate->heap()->undefined_value(); |
} |
+RUNTIME_FUNCTION(Runtime_SetWasmCompileFromPromiseOverload) { |
+ v8::ExtensionCallback old = isolate->wasm_compile_callback(); |
+ HandleScope scope(isolate); |
+ Handle<Foreign> ret = |
+ isolate->factory()->NewForeign(reinterpret_cast<Address>(old)); |
+ isolate->set_wasm_compile_callback(GetWasmFromResolvedPromise); |
+ return *ret; |
+} |
+ |
+RUNTIME_FUNCTION(Runtime_ResetWasmOverloads) { |
+ HandleScope scope(isolate); |
+ DCHECK_EQ(1, args.length()); |
+ CONVERT_ARG_HANDLE_CHECKED(Foreign, old, 0); |
+ isolate->set_wasm_compile_callback( |
+ reinterpret_cast<v8::ExtensionCallback>(old->foreign_address())); |
+ return isolate->heap()->undefined_value(); |
+} |
+ |
RUNTIME_FUNCTION(Runtime_CheckWasmWrapperElision) { |
// This only supports the case where the function being exported |
// calls an intermediate function, and the intermediate function |