summaryrefslogtreecommitdiff
path: root/deps/v8/src/asmjs/asm-js.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/asmjs/asm-js.cc')
-rw-r--r--deps/v8/src/asmjs/asm-js.cc44
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.