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_MIPS | 5 #if V8_TARGET_ARCH_MIPS |
6 | 6 |
7 #include "src/code-stubs.h" | 7 #include "src/code-stubs.h" |
8 #include "src/api-arguments.h" | 8 #include "src/api-arguments.h" |
9 #include "src/base/bits.h" | 9 #include "src/base/bits.h" |
10 #include "src/bootstrapper.h" | 10 #include "src/bootstrapper.h" |
(...skipping 1203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1214 __ nop(); // Branch delay slot nop. | 1214 __ nop(); // Branch delay slot nop. |
1215 | 1215 |
1216 // Invoke: Link this frame into the handler chain. | 1216 // Invoke: Link this frame into the handler chain. |
1217 __ bind(&invoke); | 1217 __ bind(&invoke); |
1218 __ PushStackHandler(); | 1218 __ PushStackHandler(); |
1219 // If an exception not caught by another handler occurs, this handler | 1219 // If an exception not caught by another handler occurs, this handler |
1220 // returns control to the code after the bal(&invoke) above, which | 1220 // returns control to the code after the bal(&invoke) above, which |
1221 // restores all kCalleeSaved registers (including cp and fp) to their | 1221 // restores all kCalleeSaved registers (including cp and fp) to their |
1222 // saved values before returning a failure to C. | 1222 // saved values before returning a failure to C. |
1223 | 1223 |
1224 // Clear any pending exceptions. | |
1225 __ LoadRoot(t1, Heap::kTheHoleValueRootIndex); | |
1226 __ li(t0, Operand(ExternalReference(Isolate::kPendingExceptionAddress, | |
1227 isolate))); | |
1228 __ sw(t1, MemOperand(t0)); | |
1229 | |
1230 // Invoke the function by calling through JS entry trampoline builtin. | 1224 // Invoke the function by calling through JS entry trampoline builtin. |
1231 // Notice that we cannot store a reference to the trampoline code directly in | 1225 // Notice that we cannot store a reference to the trampoline code directly in |
1232 // this stub, because runtime stubs are not traversed when doing GC. | 1226 // this stub, because runtime stubs are not traversed when doing GC. |
1233 | 1227 |
1234 // Registers: | 1228 // Registers: |
1235 // a0: entry_address | 1229 // a0: entry_address |
1236 // a1: function | 1230 // a1: function |
1237 // a2: receiver_pointer | 1231 // a2: receiver_pointer |
1238 // a3: argc | 1232 // a3: argc |
1239 // s0: argv | 1233 // s0: argv |
(...skipping 4170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5410 kStackUnwindSpace, kInvalidStackOffset, | 5404 kStackUnwindSpace, kInvalidStackOffset, |
5411 return_value_operand, NULL); | 5405 return_value_operand, NULL); |
5412 } | 5406 } |
5413 | 5407 |
5414 #undef __ | 5408 #undef __ |
5415 | 5409 |
5416 } // namespace internal | 5410 } // namespace internal |
5417 } // namespace v8 | 5411 } // namespace v8 |
5418 | 5412 |
5419 #endif // V8_TARGET_ARCH_MIPS | 5413 #endif // V8_TARGET_ARCH_MIPS |
OLD | NEW |