| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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 <assert.h> // For assert | 5 #include <assert.h> // For assert |
| 6 #include <limits.h> // For LONG_MIN, LONG_MAX. | 6 #include <limits.h> // For LONG_MIN, LONG_MAX. |
| 7 | 7 |
| 8 #include "src/v8.h" | 8 #include "src/v8.h" |
| 9 | 9 |
| 10 #if V8_TARGET_ARCH_PPC | 10 #if V8_TARGET_ARCH_PPC |
| (...skipping 1079 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1090 int handler_index) { | 1090 int handler_index) { |
| 1091 // Adjust this code if not the case. | 1091 // Adjust this code if not the case. |
| 1092 STATIC_ASSERT(StackHandlerConstants::kSize == 3 * kPointerSize); | 1092 STATIC_ASSERT(StackHandlerConstants::kSize == 3 * kPointerSize); |
| 1093 STATIC_ASSERT(StackHandlerConstants::kNextOffset == 0 * kPointerSize); | 1093 STATIC_ASSERT(StackHandlerConstants::kNextOffset == 0 * kPointerSize); |
| 1094 STATIC_ASSERT(StackHandlerConstants::kStateOffset == 1 * kPointerSize); | 1094 STATIC_ASSERT(StackHandlerConstants::kStateOffset == 1 * kPointerSize); |
| 1095 STATIC_ASSERT(StackHandlerConstants::kContextOffset == 2 * kPointerSize); | 1095 STATIC_ASSERT(StackHandlerConstants::kContextOffset == 2 * kPointerSize); |
| 1096 | 1096 |
| 1097 // For the JSEntry handler, we must preserve r1-r7, r0,r8-r12 are available. | 1097 // For the JSEntry handler, we must preserve r1-r7, r0,r8-r12 are available. |
| 1098 // We want the stack to look like | 1098 // We want the stack to look like |
| 1099 // sp -> NextOffset | 1099 // sp -> NextOffset |
| 1100 // state | 1100 // index |
| 1101 // context | 1101 // context |
| 1102 | 1102 |
| 1103 // Link the current handler as the next handler. | 1103 // Link the current handler as the next handler. |
| 1104 mov(r8, Operand(ExternalReference(Isolate::kHandlerAddress, isolate()))); | 1104 mov(r8, Operand(ExternalReference(Isolate::kHandlerAddress, isolate()))); |
| 1105 LoadP(r0, MemOperand(r8)); | 1105 LoadP(r0, MemOperand(r8)); |
| 1106 StorePU(r0, MemOperand(sp, -StackHandlerConstants::kSize)); | 1106 StorePU(r0, MemOperand(sp, -StackHandlerConstants::kSize)); |
| 1107 // Set this new handler as the current one. | 1107 // Set this new handler as the current one. |
| 1108 StoreP(sp, MemOperand(r8)); | 1108 StoreP(sp, MemOperand(r8)); |
| 1109 | 1109 |
| 1110 unsigned state = StackHandler::IndexField::encode(handler_index) | | 1110 mov(r8, Operand(handler_index)); |
| 1111 StackHandler::KindField::encode(kind); | |
| 1112 LoadIntLiteral(r8, state); | |
| 1113 | |
| 1114 if (kind == StackHandler::JS_ENTRY) { | 1111 if (kind == StackHandler::JS_ENTRY) { |
| 1115 LoadSmiLiteral(cp, Smi::FromInt(0)); // Indicates no context. | 1112 LoadSmiLiteral(cp, Smi::FromInt(0)); // Indicates no context. |
| 1116 } | 1113 } |
| 1117 StoreP(r8, MemOperand(sp, StackHandlerConstants::kStateOffset)); | 1114 StoreP(r8, MemOperand(sp, StackHandlerConstants::kStateOffset)); |
| 1118 StoreP(cp, MemOperand(sp, StackHandlerConstants::kContextOffset)); | 1115 StoreP(cp, MemOperand(sp, StackHandlerConstants::kContextOffset)); |
| 1119 } | 1116 } |
| 1120 | 1117 |
| 1121 | 1118 |
| 1122 void MacroAssembler::PopTryHandler() { | 1119 void MacroAssembler::PopTryHandler() { |
| 1123 STATIC_ASSERT(StackHandlerConstants::kNextOffset == 0); | 1120 STATIC_ASSERT(StackHandlerConstants::kNextOffset == 0); |
| (...skipping 3418 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4542 } | 4539 } |
| 4543 if (mag.shift > 0) srawi(result, result, mag.shift); | 4540 if (mag.shift > 0) srawi(result, result, mag.shift); |
| 4544 ExtractBit(r0, dividend, 31); | 4541 ExtractBit(r0, dividend, 31); |
| 4545 add(result, result, r0); | 4542 add(result, result, r0); |
| 4546 } | 4543 } |
| 4547 | 4544 |
| 4548 } // namespace internal | 4545 } // namespace internal |
| 4549 } // namespace v8 | 4546 } // namespace v8 |
| 4550 | 4547 |
| 4551 #endif // V8_TARGET_ARCH_PPC | 4548 #endif // V8_TARGET_ARCH_PPC |
| OLD | NEW |