| Index: src/compiler/wasm-compiler.h
|
| diff --git a/src/compiler/wasm-compiler.h b/src/compiler/wasm-compiler.h
|
| index f2c9a7f6b8af2dc0aa8b6066a8c2a0e9ffcafee5..f356f624d72e8dbf8fbccadfbc4cebc824501412 100644
|
| --- a/src/compiler/wasm-compiler.h
|
| +++ b/src/compiler/wasm-compiler.h
|
| @@ -53,9 +53,9 @@ class WasmCompilationUnit final {
|
| wasm::FunctionBody body, wasm::WasmName name, int index,
|
| bool is_sync = true);
|
|
|
| - Zone* graph_zone() { return graph_zone_.get(); }
|
| int func_index() const { return func_index_; }
|
|
|
| + void ReopenCentryStub() { centry_stub_ = handle(*centry_stub_, isolate_); }
|
| void InitializeHandles();
|
| void ExecuteCompilation();
|
| Handle<Code> FinishCompilation(wasm::ErrorThrower* thrower);
|
| @@ -65,6 +65,9 @@ class WasmCompilationUnit final {
|
| wasm::ModuleBytesEnv* module_env,
|
| const wasm::WasmFunction* function);
|
|
|
| + void set_memory_cost(size_t memory_cost) { memory_cost_ = memory_cost; }
|
| + size_t memory_cost() const { return memory_cost_; }
|
| +
|
| private:
|
| SourcePositionTable* BuildGraphForWasmFunction(double* decode_ms);
|
|
|
| @@ -73,22 +76,20 @@ class WasmCompilationUnit final {
|
| wasm::FunctionBody func_body_;
|
| wasm::WasmName func_name_;
|
| bool is_sync_;
|
| - // The graph zone is deallocated at the end of ExecuteCompilation.
|
| - std::unique_ptr<Zone> graph_zone_;
|
| - JSGraph* jsgraph_;
|
| - Zone compilation_zone_;
|
| - CompilationInfo info_;
|
| + // The graph zone is deallocated at the end of ExecuteCompilation by virtue of
|
| + // it being zone allocated.
|
| + JSGraph* jsgraph_ = nullptr;
|
| + // the compilation_zone_, info_, and job_ fields need to survive past
|
| + // ExecuteCompilation, onto FinishCompilation (which happens on the main
|
| + // thread).
|
| + std::unique_ptr<Zone> compilation_zone_;
|
| + std::unique_ptr<CompilationInfo> info_;
|
| std::unique_ptr<CompilationJob> job_;
|
| + Handle<Code> centry_stub_;
|
| int func_index_;
|
| wasm::Result<wasm::DecodeStruct*> graph_construction_result_;
|
| bool ok_ = true;
|
| -#if DEBUG
|
| - bool handles_initialized_ = false;
|
| -#endif // DEBUG
|
| - ZoneVector<trap_handler::ProtectedInstructionData>
|
| - protected_instructions_; // Instructions that are protected by the signal
|
| - // handler.
|
| -
|
| + size_t memory_cost_ = 0;
|
| void ExecuteCompilationInternal();
|
|
|
| DISALLOW_COPY_AND_ASSIGN(WasmCompilationUnit);
|
| @@ -119,7 +120,8 @@ typedef ZoneVector<Node*> NodeVector;
|
| class WasmGraphBuilder {
|
| public:
|
| WasmGraphBuilder(
|
| - wasm::ModuleEnv* module_env, Zone* z, JSGraph* g, wasm::FunctionSig* sig,
|
| + wasm::ModuleEnv* module_env, Zone* z, JSGraph* g,
|
| + Handle<Code> centry_stub_, wasm::FunctionSig* sig,
|
| compiler::SourcePositionTable* source_position_table = nullptr);
|
|
|
| Node** Buffer(size_t count) {
|
| @@ -269,6 +271,7 @@ class WasmGraphBuilder {
|
|
|
| Zone* zone_;
|
| JSGraph* jsgraph_;
|
| + Node* centry_stub_node_;
|
| wasm::ModuleEnv* module_ = nullptr;
|
| Node* mem_buffer_ = nullptr;
|
| Node* mem_size_ = nullptr;
|
|
|