| OLD | NEW |
| 1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef V8_COMPILER_WASM_COMPILER_H_ | 5 #ifndef V8_COMPILER_WASM_COMPILER_H_ |
| 6 #define V8_COMPILER_WASM_COMPILER_H_ | 6 #define V8_COMPILER_WASM_COMPILER_H_ |
| 7 | 7 |
| 8 #include <memory> | 8 #include <memory> |
| 9 | 9 |
| 10 // Clients of this interface shouldn't depend on lots of compiler internals. | 10 // Clients of this interface shouldn't depend on lots of compiler internals. |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 102 const wasm::WasmModule* module, | 102 const wasm::WasmModule* module, |
| 103 Handle<Code> wasm_code, uint32_t index); | 103 Handle<Code> wasm_code, uint32_t index); |
| 104 | 104 |
| 105 // Abstracts details of building TurboFan graph nodes for WASM to separate | 105 // Abstracts details of building TurboFan graph nodes for WASM to separate |
| 106 // the WASM decoder from the internal details of TurboFan. | 106 // the WASM decoder from the internal details of TurboFan. |
| 107 class WasmTrapHelper; | 107 class WasmTrapHelper; |
| 108 typedef ZoneVector<Node*> NodeVector; | 108 typedef ZoneVector<Node*> NodeVector; |
| 109 class WasmGraphBuilder { | 109 class WasmGraphBuilder { |
| 110 public: | 110 public: |
| 111 WasmGraphBuilder( | 111 WasmGraphBuilder( |
| 112 Zone* z, JSGraph* g, wasm::FunctionSig* sig, | 112 wasm::ModuleEnv* module_env, Zone* z, JSGraph* g, wasm::FunctionSig* sig, |
| 113 compiler::SourcePositionTable* source_position_table = nullptr); | 113 compiler::SourcePositionTable* source_position_table = nullptr); |
| 114 | 114 |
| 115 Node** Buffer(size_t count) { | 115 Node** Buffer(size_t count) { |
| 116 if (count > cur_bufsize_) { | 116 if (count > cur_bufsize_) { |
| 117 size_t new_size = count + cur_bufsize_ + 5; | 117 size_t new_size = count + cur_bufsize_ + 5; |
| 118 cur_buffer_ = | 118 cur_buffer_ = |
| 119 reinterpret_cast<Node**>(zone_->New(new_size * sizeof(Node*))); | 119 reinterpret_cast<Node**>(zone_->New(new_size * sizeof(Node*))); |
| 120 cur_bufsize_ = new_size; | 120 cur_bufsize_ = new_size; |
| 121 } | 121 } |
| 122 return cur_buffer_; | 122 return cur_buffer_; |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 199 wasm::WasmCodePosition position); | 199 wasm::WasmCodePosition position); |
| 200 Node* StoreMem(MachineType type, Node* index, uint32_t offset, | 200 Node* StoreMem(MachineType type, Node* index, uint32_t offset, |
| 201 uint32_t alignment, Node* val, | 201 uint32_t alignment, Node* val, |
| 202 wasm::WasmCodePosition position); | 202 wasm::WasmCodePosition position); |
| 203 | 203 |
| 204 static void PrintDebugName(Node* node); | 204 static void PrintDebugName(Node* node); |
| 205 | 205 |
| 206 Node* Control() { return *control_; } | 206 Node* Control() { return *control_; } |
| 207 Node* Effect() { return *effect_; } | 207 Node* Effect() { return *effect_; } |
| 208 | 208 |
| 209 void set_module(wasm::ModuleEnv* module) { this->module_ = module; } | |
| 210 | |
| 211 void set_control_ptr(Node** control) { this->control_ = control; } | 209 void set_control_ptr(Node** control) { this->control_ = control; } |
| 212 | 210 |
| 213 void set_effect_ptr(Node** effect) { this->effect_ = effect; } | 211 void set_effect_ptr(Node** effect) { this->effect_ = effect; } |
| 214 | 212 |
| 215 wasm::FunctionSig* GetFunctionSignature() { return sig_; } | 213 wasm::FunctionSig* GetFunctionSignature() { return sig_; } |
| 216 | 214 |
| 217 void Int64LoweringForTesting(); | 215 void Int64LoweringForTesting(); |
| 218 | 216 |
| 219 void SimdScalarLoweringForTesting(); | 217 void SimdScalarLoweringForTesting(); |
| 220 | 218 |
| 221 void SetSourcePosition(Node* node, wasm::WasmCodePosition position); | 219 void SetSourcePosition(Node* node, wasm::WasmCodePosition position); |
| 222 | 220 |
| 223 Node* CreateS128Value(int32_t value); | 221 Node* CreateS128Value(int32_t value); |
| 224 | 222 |
| 225 Node* SimdOp(wasm::WasmOpcode opcode, const NodeVector& inputs); | 223 Node* SimdOp(wasm::WasmOpcode opcode, const NodeVector& inputs); |
| 226 | 224 |
| 227 Node* SimdLaneOp(wasm::WasmOpcode opcode, uint8_t lane, | 225 Node* SimdLaneOp(wasm::WasmOpcode opcode, uint8_t lane, |
| 228 const NodeVector& inputs); | 226 const NodeVector& inputs); |
| 229 | 227 |
| 230 bool has_simd() const { return has_simd_; } | 228 bool has_simd() const { return has_simd_; } |
| 231 | 229 |
| 230 wasm::ModuleEnv* module_env() const { return module_; } |
| 231 |
| 232 private: | 232 private: |
| 233 static const int kDefaultBufferSize = 16; | 233 static const int kDefaultBufferSize = 16; |
| 234 friend class WasmTrapHelper; | 234 friend class WasmTrapHelper; |
| 235 | 235 |
| 236 Zone* zone_; | 236 Zone* zone_; |
| 237 JSGraph* jsgraph_; | 237 JSGraph* jsgraph_; |
| 238 wasm::ModuleEnv* module_ = nullptr; | 238 wasm::ModuleEnv* module_ = nullptr; |
| 239 Node* mem_buffer_ = nullptr; | 239 Node* mem_buffer_ = nullptr; |
| 240 Node* mem_size_ = nullptr; | 240 Node* mem_size_ = nullptr; |
| 241 NodeVector function_tables_; | 241 NodeVector function_tables_; |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 371 } | 371 } |
| 372 | 372 |
| 373 int AddParameterNodes(Node** args, int pos, int param_count, | 373 int AddParameterNodes(Node** args, int pos, int param_count, |
| 374 wasm::FunctionSig* sig); | 374 wasm::FunctionSig* sig); |
| 375 }; | 375 }; |
| 376 } // namespace compiler | 376 } // namespace compiler |
| 377 } // namespace internal | 377 } // namespace internal |
| 378 } // namespace v8 | 378 } // namespace v8 |
| 379 | 379 |
| 380 #endif // V8_COMPILER_WASM_COMPILER_H_ | 380 #endif // V8_COMPILER_WASM_COMPILER_H_ |
| OLD | NEW |