Index: src/compiler/wasm-compiler.h |
diff --git a/src/compiler/wasm-compiler.h b/src/compiler/wasm-compiler.h |
index 93c2ae91d10168e573ac8f0178bb261e74d5ca8e..f52e559d52930dc089ef5217459b3236100fe9ae 100644 |
--- a/src/compiler/wasm-compiler.h |
+++ b/src/compiler/wasm-compiler.h |
@@ -7,6 +7,7 @@ |
// Clients of this interface shouldn't depend on lots of compiler internals. |
// Do not include anything from src/compiler here! |
+#include "src/compiler.h" |
#include "src/wasm/wasm-opcodes.h" |
#include "src/zone.h" |
@@ -20,7 +21,6 @@ class JSGraph; |
class Graph; |
class Operator; |
class SourcePositionTable; |
-class WasmCompilationUnit; |
} |
namespace wasm { |
@@ -35,10 +35,41 @@ typedef compiler::JSGraph TFGraph; |
} |
namespace compiler { |
-// Compiles a single function, producing a code object. |
-Handle<Code> CompileWasmFunction(wasm::ErrorThrower* thrower, Isolate* isolate, |
- wasm::ModuleEnv* module_env, |
- const wasm::WasmFunction* function); |
+class WasmCompilationUnit final { |
+ public: |
+ WasmCompilationUnit(wasm::ErrorThrower* thrower, Isolate* isolate, |
+ wasm::ModuleEnv* module_env, |
+ const wasm::WasmFunction* function, uint32_t index); |
+ |
+ Zone* graph_zone() { return graph_zone_.get(); } |
+ int index() const { return index_; } |
+ |
+ void ExecuteCompilation(); |
+ Handle<Code> FinishCompilation(); |
+ |
+ static Handle<Code> CompileWasmFunction(wasm::ErrorThrower* thrower, |
+ Isolate* isolate, |
+ wasm::ModuleEnv* module_env, |
+ const wasm::WasmFunction* function) { |
+ WasmCompilationUnit unit(thrower, isolate, module_env, function, 0); |
+ unit.ExecuteCompilation(); |
+ return unit.FinishCompilation(); |
+ } |
+ |
+ private: |
+ wasm::ErrorThrower* thrower_; |
+ Isolate* isolate_; |
+ wasm::ModuleEnv* module_env_; |
+ const wasm::WasmFunction* function_; |
+ // The graph zone is deallocated at the end of ExecuteCompilation. |
+ base::SmartPointer<Zone> graph_zone_; |
+ JSGraph* jsgraph_; |
+ Zone compilation_zone_; |
+ CompilationInfo info_; |
+ base::SmartPointer<CompilationJob> job_; |
+ uint32_t index_; |
+ bool ok_; |
+}; |
// Wraps a JS function, producing a code object that can be called from WASM. |
Handle<Code> CompileWasmToJSWrapper(Isolate* isolate, wasm::ModuleEnv* module, |
@@ -53,16 +84,6 @@ Handle<JSFunction> CompileJSToWasmWrapper( |
Isolate* isolate, wasm::ModuleEnv* module, Handle<String> name, |
Handle<Code> wasm_code, Handle<JSObject> module_object, uint32_t index); |
-WasmCompilationUnit* CreateWasmCompilationUnit( |
- wasm::ErrorThrower* thrower, Isolate* isolate, wasm::ModuleEnv* module_env, |
- const wasm::WasmFunction* function, uint32_t index); |
- |
-void ExecuteCompilation(WasmCompilationUnit* unit); |
- |
-Handle<Code> FinishCompilation(WasmCompilationUnit* unit); |
- |
-uint32_t GetIndexOfWasmCompilationUnit(WasmCompilationUnit* unit); |
- |
// Abstracts details of building TurboFan graph nodes for WASM to separate |
// the WASM decoder from the internal details of TurboFan. |
class WasmTrapHelper; |