OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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_ARM64 | 5 #if V8_TARGET_ARCH_ARM64 |
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/bootstrapper.h" | 9 #include "src/bootstrapper.h" |
10 #include "src/codegen.h" | 10 #include "src/codegen.h" |
(...skipping 1196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1207 __ B(&exit); | 1207 __ B(&exit); |
1208 | 1208 |
1209 // Invoke: Link this frame into the handler chain. | 1209 // Invoke: Link this frame into the handler chain. |
1210 __ Bind(&invoke); | 1210 __ Bind(&invoke); |
1211 __ PushStackHandler(); | 1211 __ PushStackHandler(); |
1212 // If an exception not caught by another handler occurs, this handler | 1212 // If an exception not caught by another handler occurs, this handler |
1213 // returns control to the code after the B(&invoke) above, which | 1213 // returns control to the code after the B(&invoke) above, which |
1214 // restores all callee-saved registers (including cp and fp) to their | 1214 // restores all callee-saved registers (including cp and fp) to their |
1215 // saved values before returning a failure to C. | 1215 // saved values before returning a failure to C. |
1216 | 1216 |
1217 // Clear any pending exceptions. | |
1218 __ Mov(x10, Operand(isolate()->factory()->the_hole_value())); | |
1219 __ Mov(x11, Operand(ExternalReference(Isolate::kPendingExceptionAddress, | |
1220 isolate()))); | |
1221 __ Str(x10, MemOperand(x11)); | |
1222 | |
1223 // Invoke the function by calling through the JS entry trampoline builtin. | 1217 // Invoke the function by calling through the JS entry trampoline builtin. |
1224 // Notice that we cannot store a reference to the trampoline code directly in | 1218 // Notice that we cannot store a reference to the trampoline code directly in |
1225 // this stub, because runtime stubs are not traversed when doing GC. | 1219 // this stub, because runtime stubs are not traversed when doing GC. |
1226 | 1220 |
1227 // Expected registers by Builtins::JSEntryTrampoline | 1221 // Expected registers by Builtins::JSEntryTrampoline |
1228 // x0: code entry. | 1222 // x0: code entry. |
1229 // x1: function. | 1223 // x1: function. |
1230 // x2: receiver. | 1224 // x2: receiver. |
1231 // x3: argc. | 1225 // x3: argc. |
1232 // x4: argv. | 1226 // x4: argv. |
(...skipping 4348 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5581 kStackUnwindSpace, NULL, spill_offset, | 5575 kStackUnwindSpace, NULL, spill_offset, |
5582 return_value_operand, NULL); | 5576 return_value_operand, NULL); |
5583 } | 5577 } |
5584 | 5578 |
5585 #undef __ | 5579 #undef __ |
5586 | 5580 |
5587 } // namespace internal | 5581 } // namespace internal |
5588 } // namespace v8 | 5582 } // namespace v8 |
5589 | 5583 |
5590 #endif // V8_TARGET_ARCH_ARM64 | 5584 #endif // V8_TARGET_ARCH_ARM64 |
OLD | NEW |