Index: vm/cpu_x64.cc |
=================================================================== |
--- vm/cpu_x64.cc (revision 9040) |
+++ vm/cpu_x64.cc (working copy) |
@@ -20,91 +20,6 @@ |
} |
-void CPU::JumpToExceptionHandler(uword program_counter, |
- uword stack_pointer, |
- uword frame_pointer, |
- const Instance& exception_object, |
- const Instance& stacktrace_object) { |
- // The no_gc StackResource is unwound through the tear down of |
- // stack resources below. |
- NoGCScope no_gc; |
- RawInstance* exception = exception_object.raw(); |
- RawInstance* stacktrace = stacktrace_object.raw(); |
- |
- // Prepare for unwinding frames by destroying all the stack resources |
- // in the previous frames. |
- Isolate* isolate = Isolate::Current(); |
- while (isolate->top_resource() != NULL && |
- (reinterpret_cast<uword>(isolate->top_resource()) < stack_pointer)) { |
- isolate->top_resource()->~StackResource(); |
- } |
- |
- // Set up the appropriate register state and jump to the handler. |
- ASSERT(kExceptionObjectReg == RAX); |
- ASSERT(kStackTraceObjectReg == RDX); |
-#if defined(TARGET_OS_WINDOWS) |
- UNIMPLEMENTED(); |
-#else |
- asm volatile("mov %[exception], %%rax;" |
- "mov %[stacktrace], %%rdx;" |
- "mov %[pc], %%rbx;" |
- "mov %[fp], %%rcx;" |
- "mov %[sp], %%rdi;" |
- "mov %%rcx, %%rbp;" |
- "mov %%rdi, %%rsp;" |
- "jmp *%%rbx;" |
- : |
- : [exception] "m" (exception), |
- [stacktrace] "m" (stacktrace), |
- [pc] "m" (program_counter), |
- [sp] "m" (stack_pointer), |
- [fp] "m" (frame_pointer)); |
-#endif |
- UNREACHABLE(); |
-} |
- |
- |
-void CPU::JumpToErrorHandler( |
- uword program_counter, |
- uword stack_pointer, |
- uword frame_pointer, |
- const Error& error) { |
- // The no_gc StackResource is unwound through the tear down of |
- // stack resources below. |
- NoGCScope no_gc; |
- ASSERT(!error.IsNull()); |
- RawError* raw_error = error.raw(); |
- |
- // Prepare for unwinding frames by destroying all the stack resources |
- // in the previous frames. |
- Isolate* isolate = Isolate::Current(); |
- while (isolate->top_resource() != NULL && |
- (reinterpret_cast<uword>(isolate->top_resource()) < stack_pointer)) { |
- isolate->top_resource()->~StackResource(); |
- } |
- |
- // Set up the error object as the return value in RAX and continue |
- // from the invocation stub. |
-#if defined(TARGET_OS_WINDOWS) |
- UNIMPLEMENTED(); |
-#else |
- asm volatile("mov %[raw_error], %%rax;" |
- "mov %[pc], %%rbx;" |
- "mov %[fp], %%rcx;" |
- "mov %[sp], %%rdi;" |
- "mov %%rcx, %%rbp;" |
- "mov %%rdi, %%rsp;" |
- "jmp *%%rbx;" |
- : |
- : [raw_error] "m" (raw_error), |
- [pc] "m" (program_counter), |
- [sp] "m" (stack_pointer), |
- [fp] "m" (frame_pointer)); |
-#endif |
- UNREACHABLE(); |
-} |
- |
- |
const char* CPU::Id() { |
return "x64"; |
} |