OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 #if V8_TARGET_ARCH_MIPS64 | 5 #if V8_TARGET_ARCH_MIPS64 |
6 | 6 |
7 #include "src/codegen.h" | 7 #include "src/codegen.h" |
8 #include "src/debug/debug.h" | 8 #include "src/debug/debug.h" |
9 #include "src/deoptimizer.h" | 9 #include "src/deoptimizer.h" |
10 #include "src/full-codegen/full-codegen.h" | 10 #include "src/full-codegen/full-codegen.h" |
(...skipping 1456 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1467 __ li(a0, Operand(Smi::FromInt(static_cast<int>(type)))); | 1467 __ li(a0, Operand(Smi::FromInt(static_cast<int>(type)))); |
1468 __ push(a0); | 1468 __ push(a0); |
1469 __ CallRuntime(Runtime::kNotifyDeoptimized); | 1469 __ CallRuntime(Runtime::kNotifyDeoptimized); |
1470 } | 1470 } |
1471 | 1471 |
1472 // Get the full codegen state from the stack and untag it -> a6. | 1472 // Get the full codegen state from the stack and untag it -> a6. |
1473 __ ld(a6, MemOperand(sp, 0 * kPointerSize)); | 1473 __ ld(a6, MemOperand(sp, 0 * kPointerSize)); |
1474 __ SmiUntag(a6); | 1474 __ SmiUntag(a6); |
1475 // Switch on the state. | 1475 // Switch on the state. |
1476 Label with_tos_register, unknown_state; | 1476 Label with_tos_register, unknown_state; |
1477 __ Branch(&with_tos_register, ne, a6, | 1477 __ Branch( |
1478 Operand(static_cast<int>(Deoptimizer::BailoutState::NO_REGISTERS))); | 1478 &with_tos_register, ne, a6, |
| 1479 Operand(static_cast<int64_t>(Deoptimizer::BailoutState::NO_REGISTERS))); |
1479 __ Ret(USE_DELAY_SLOT); | 1480 __ Ret(USE_DELAY_SLOT); |
1480 // Safe to fill delay slot Addu will emit one instruction. | 1481 // Safe to fill delay slot Addu will emit one instruction. |
1481 __ Daddu(sp, sp, Operand(1 * kPointerSize)); // Remove state. | 1482 __ Daddu(sp, sp, Operand(1 * kPointerSize)); // Remove state. |
1482 | 1483 |
1483 __ bind(&with_tos_register); | 1484 __ bind(&with_tos_register); |
1484 DCHECK_EQ(kInterpreterAccumulatorRegister.code(), v0.code()); | 1485 DCHECK_EQ(kInterpreterAccumulatorRegister.code(), v0.code()); |
1485 __ ld(v0, MemOperand(sp, 1 * kPointerSize)); | 1486 __ ld(v0, MemOperand(sp, 1 * kPointerSize)); |
1486 __ Branch(&unknown_state, ne, a6, | 1487 __ Branch( |
1487 Operand(static_cast<int>(Deoptimizer::BailoutState::TOS_REGISTER))); | 1488 &unknown_state, ne, a6, |
| 1489 Operand(static_cast<int64_t>(Deoptimizer::BailoutState::TOS_REGISTER))); |
1488 | 1490 |
1489 __ Ret(USE_DELAY_SLOT); | 1491 __ Ret(USE_DELAY_SLOT); |
1490 // Safe to fill delay slot Addu will emit one instruction. | 1492 // Safe to fill delay slot Addu will emit one instruction. |
1491 __ Daddu(sp, sp, Operand(2 * kPointerSize)); // Remove state. | 1493 __ Daddu(sp, sp, Operand(2 * kPointerSize)); // Remove state. |
1492 | 1494 |
1493 __ bind(&unknown_state); | 1495 __ bind(&unknown_state); |
1494 __ stop("no cases left"); | 1496 __ stop("no cases left"); |
1495 } | 1497 } |
1496 | 1498 |
1497 | 1499 |
(...skipping 1319 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2817 } | 2819 } |
2818 } | 2820 } |
2819 | 2821 |
2820 | 2822 |
2821 #undef __ | 2823 #undef __ |
2822 | 2824 |
2823 } // namespace internal | 2825 } // namespace internal |
2824 } // namespace v8 | 2826 } // namespace v8 |
2825 | 2827 |
2826 #endif // V8_TARGET_ARCH_MIPS64 | 2828 #endif // V8_TARGET_ARCH_MIPS64 |
OLD | NEW |