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 #include "src/compiler/wasm-compiler.h" | 5 #include "src/compiler/wasm-compiler.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 | 8 |
9 #include "src/isolate-inl.h" | 9 #include "src/isolate-inl.h" |
10 | 10 |
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
367 } | 367 } |
368 | 368 |
369 Node* WasmGraphBuilder::Int32Constant(int32_t value) { | 369 Node* WasmGraphBuilder::Int32Constant(int32_t value) { |
370 return jsgraph()->Int32Constant(value); | 370 return jsgraph()->Int32Constant(value); |
371 } | 371 } |
372 | 372 |
373 Node* WasmGraphBuilder::Int64Constant(int64_t value) { | 373 Node* WasmGraphBuilder::Int64Constant(int64_t value) { |
374 return jsgraph()->Int64Constant(value); | 374 return jsgraph()->Int64Constant(value); |
375 } | 375 } |
376 | 376 |
377 void WasmGraphBuilder::InitStackCheck(wasm::WasmCodePosition position) { | |
378 Node* limit = graph()->NewNode( | |
379 jsgraph()->machine()->Load(MachineType::Pointer()), | |
380 jsgraph()->ExternalConstant( | |
381 ExternalReference::address_of_stack_limit(jsgraph()->isolate())), | |
382 jsgraph()->IntPtrConstant(0), *effect_, *control_); | |
383 Node* pointer = graph()->NewNode(jsgraph()->machine()->LoadStackPointer()); | |
384 | |
385 Node* check = | |
386 graph()->NewNode(jsgraph()->machine()->UintLessThan(), limit, pointer); | |
387 trap_->AddTrapIfFalse(wasm::kTrapStackOverflow, check, position); | |
titzer
2016/08/17 08:23:28
We'll need to use the regular JS machinery here an
ahaas
2016/08/17 09:18:43
Done.
| |
388 } | |
389 | |
377 Node* WasmGraphBuilder::Binop(wasm::WasmOpcode opcode, Node* left, Node* right, | 390 Node* WasmGraphBuilder::Binop(wasm::WasmOpcode opcode, Node* left, Node* right, |
378 wasm::WasmCodePosition position) { | 391 wasm::WasmCodePosition position) { |
379 const Operator* op; | 392 const Operator* op; |
380 MachineOperatorBuilder* m = jsgraph()->machine(); | 393 MachineOperatorBuilder* m = jsgraph()->machine(); |
381 switch (opcode) { | 394 switch (opcode) { |
382 case wasm::kExprI32Add: | 395 case wasm::kExprI32Add: |
383 op = m->Int32Add(); | 396 op = m->Int32Add(); |
384 break; | 397 break; |
385 case wasm::kExprI32Sub: | 398 case wasm::kExprI32Sub: |
386 op = m->Int32Sub(); | 399 op = m->Int32Sub(); |
(...skipping 2840 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3227 function_->code_start_offset), | 3240 function_->code_start_offset), |
3228 compile_ms); | 3241 compile_ms); |
3229 } | 3242 } |
3230 | 3243 |
3231 return code; | 3244 return code; |
3232 } | 3245 } |
3233 | 3246 |
3234 } // namespace compiler | 3247 } // namespace compiler |
3235 } // namespace internal | 3248 } // namespace internal |
3236 } // namespace v8 | 3249 } // namespace v8 |
OLD | NEW |