1014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch// Copyright 2015 the V8 project authors. All rights reserved. 2014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch// found in the LICENSE file. 4014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 5f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#ifndef V8_ASMJS_ASM_WASM_BUILDER_H_ 6f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#define V8_ASMJS_ASM_WASM_BUILDER_H_ 7014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 8014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch#include "src/allocation.h" 9f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#include "src/asmjs/asm-typer.h" 10109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch#include "src/objects.h" 11f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch#include "src/wasm/wasm-module-builder.h" 12f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch#include "src/zone/zone.h" 13014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 14014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochnamespace v8 { 15014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochnamespace internal { 16014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 1762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdochclass CompilationInfo; 18014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 19014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochnamespace wasm { 20014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 21014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochclass AsmWasmBuilder { 22014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch public: 23c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch struct Result { 24c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch ZoneBuffer* module_bytes; 25c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch ZoneBuffer* asm_offset_table; 2662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch bool success; 27c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch }; 28c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch 2962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch explicit AsmWasmBuilder(CompilationInfo* info); 30c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch Result Run(Handle<FixedArray>* foreign_args); 31014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 32f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch static const char* foreign_init_name; 33f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch static const char* single_function_name; 34f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch 3562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch const AsmTyper* typer() { return &typer_; } 3662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch 37014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch private: 3862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch CompilationInfo* info_; 3962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch AsmTyper typer_; 40014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch}; 41014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch} // namespace wasm 42014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch} // namespace internal 43014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch} // namespace v8 44014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 45014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch#endif // V8_WASM_ASM_WASM_BUILDER_H_ 46