// Copyright 2016 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef V8_ASMJS_ASM_JS_H_ #define V8_ASMJS_ASM_JS_H_ // Clients of this interface shouldn't depend on lots of asmjs internals. // Do not include anything from src/asmjs here! #include "src/globals.h" namespace v8 { namespace internal { class AccountingAllocator; class FunctionLiteral; class JSArrayBuffer; class ParseInfo; class SharedFunctionInfo; class UnoptimizedCompilationJob; // Interface to compile and instantiate for asm.js modules. class AsmJs { public: static UnoptimizedCompilationJob* NewCompilationJob( ParseInfo* parse_info, FunctionLiteral* literal, AccountingAllocator* allocator); static MaybeHandle<Object> InstantiateAsmWasm(Isolate* isolate, Handle<SharedFunctionInfo>, Handle<FixedArray> wasm_data, Handle<JSReceiver> stdlib, Handle<JSReceiver> foreign, Handle<JSArrayBuffer> memory); // Special export name used to indicate that the module exports a single // function instead of a JavaScript object holding multiple functions. static const char* const kSingleFunctionName; }; } // namespace internal } // namespace v8 #endif // V8_ASMJS_ASM_JS_H_