diff options
Diffstat (limited to 'deps/v8/src/asmjs/asm-js.cc')
-rw-r--r-- | deps/v8/src/asmjs/asm-js.cc | 44 |
1 files changed, 24 insertions, 20 deletions
diff --git a/deps/v8/src/asmjs/asm-js.cc b/deps/v8/src/asmjs/asm-js.cc index 5e3d0d0c2a..fc56b7e23a 100644 --- a/deps/v8/src/asmjs/asm-js.cc +++ b/deps/v8/src/asmjs/asm-js.cc @@ -21,8 +21,7 @@ #include "src/parsing/scanner-character-streams.h" #include "src/parsing/scanner.h" -#include "src/wasm/module-compiler.h" -#include "src/wasm/module-decoder.h" +#include "src/wasm/wasm-engine.h" #include "src/wasm/wasm-js.h" #include "src/wasm/wasm-module-builder.h" #include "src/wasm/wasm-objects-inl.h" @@ -66,18 +65,21 @@ bool AreStdlibMembersValid(Isolate* isolate, Handle<JSReceiver> stdlib, Handle<Object> value = JSReceiver::GetDataProperty(stdlib, name); if (!value->IsNaN()) return false; } -#define STDLIB_MATH_FUNC(fname, FName, ignore1, ignore2) \ - if (members.Contains(wasm::AsmJsParser::StandardMember::kMath##FName)) { \ - members.Remove(wasm::AsmJsParser::StandardMember::kMath##FName); \ - Handle<Name> name(isolate->factory()->InternalizeOneByteString( \ - STATIC_CHAR_VECTOR(#fname))); \ - Handle<Object> value = StdlibMathMember(isolate, stdlib, name); \ - if (!value->IsJSFunction()) return false; \ - Handle<JSFunction> func = Handle<JSFunction>::cast(value); \ - if (func->shared()->code() != \ - isolate->builtins()->builtin(Builtins::kMath##FName)) { \ - return false; \ - } \ +#define STDLIB_MATH_FUNC(fname, FName, ignore1, ignore2) \ + if (members.Contains(wasm::AsmJsParser::StandardMember::kMath##FName)) { \ + members.Remove(wasm::AsmJsParser::StandardMember::kMath##FName); \ + Handle<Name> name(isolate->factory()->InternalizeOneByteString( \ + STATIC_CHAR_VECTOR(#fname))); \ + Handle<Object> value = StdlibMathMember(isolate, stdlib, name); \ + if (!value->IsJSFunction()) return false; \ + SharedFunctionInfo* shared = Handle<JSFunction>::cast(value)->shared(); \ + if (shared->HasLazyDeserializationBuiltinId()) { \ + if (shared->lazy_deserialization_builtin_id() != Builtins::kMath##FName) \ + return false; \ + } else if (shared->code() != \ + isolate->builtins()->builtin(Builtins::kMath##FName)) { \ + return false; \ + } \ } STDLIB_MATH_FUNCTION_LIST(STDLIB_MATH_FUNC) #undef STDLIB_MATH_FUNC @@ -284,11 +286,12 @@ CompilationJob::Status AsmJsCompilationJob::FinalizeJobImpl(Isolate* isolate) { wasm::ErrorThrower thrower(isolate, "AsmJs::Compile"); Handle<WasmModuleObject> compiled = - SyncCompileTranslatedAsmJs( - isolate, &thrower, - wasm::ModuleWireBytes(module_->begin(), module_->end()), - parse_info()->script(), - Vector<const byte>(asm_offsets_->begin(), asm_offsets_->size())) + isolate->wasm_engine() + ->SyncCompileTranslatedAsmJs( + isolate, &thrower, + wasm::ModuleWireBytes(module_->begin(), module_->end()), + parse_info()->script(), + Vector<const byte>(asm_offsets_->begin(), asm_offsets_->size())) .ToHandleChecked(); DCHECK(!thrower.error()); compile_time_ = compile_timer.Elapsed().InMillisecondsF(); @@ -389,7 +392,8 @@ MaybeHandle<Object> AsmJs::InstantiateAsmWasm(Isolate* isolate, wasm::ErrorThrower thrower(isolate, "AsmJs::Instantiate"); MaybeHandle<Object> maybe_module_object = - wasm::SyncInstantiate(isolate, &thrower, module, foreign, memory); + isolate->wasm_engine()->SyncInstantiate(isolate, &thrower, module, + foreign, memory); if (maybe_module_object.is_null()) { // An exception caused by the module start function will be set as pending // and bypass the {ErrorThrower}, this happens in case of a stack overflow. |