| OLD | NEW | 
|     1 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file |     1 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file | 
|     2 // for details. All rights reserved. Use of this source code is governed by a |     2 // for details. All rights reserved. Use of this source code is governed by a | 
|     3 // BSD-style license that can be found in the LICENSE file. |     3 // BSD-style license that can be found in the LICENSE file. | 
|     4  |     4  | 
|     5 #include "vm/globals.h" |     5 #include "vm/globals.h" | 
|     6 #if defined(TARGET_ARCH_X64) |     6 #if defined(TARGET_ARCH_X64) | 
|     7  |     7  | 
|     8 #include "vm/assembler.h" |     8 #include "vm/assembler.h" | 
|     9 #include "vm/assembler_macros.h" |     9 #include "vm/assembler_macros.h" | 
|    10 #include "vm/compiler.h" |    10 #include "vm/compiler.h" | 
| (...skipping 538 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   549     // Restore result into RBX. |   549     // Restore result into RBX. | 
|   550     __ movq(RBX, Address(RBP, -1 * kWordSize)); |   550     __ movq(RBX, Address(RBP, -1 * kWordSize)); | 
|   551   } |   551   } | 
|   552   // Code above cannot cause GC. |   552   // Code above cannot cause GC. | 
|   553   __ LeaveFrame(); |   553   __ LeaveFrame(); | 
|   554   __ movq(RBP, RAX); |   554   __ movq(RBP, RAX); | 
|   555  |   555  | 
|   556   // Frame is fully rewritten at this point and it is safe to perform a GC. |   556   // Frame is fully rewritten at this point and it is safe to perform a GC. | 
|   557   // Materialize any objects that were deferred by FillFrame because they |   557   // Materialize any objects that were deferred by FillFrame because they | 
|   558   // require allocation. |   558   // require allocation. | 
|   559   __ EnterFrame(0); |   559   AssemblerMacros::EnterStubFrame(assembler); | 
|   560   if (preserve_rax) { |   560   if (preserve_rax) { | 
|   561     __ pushq(RBX);  // Preserve result, it will be GC-d here. |   561     __ pushq(RBX);  // Preserve result, it will be GC-d here. | 
|   562   } |   562   } | 
|   563   __ CallRuntime(kDeoptimizeMaterializeDoublesRuntimeEntry); |   563   __ CallRuntime(kDeoptimizeMaterializeDoublesRuntimeEntry); | 
|   564   if (preserve_rax) { |   564   if (preserve_rax) { | 
|   565     __ popq(RAX);  // Restore result. |   565     __ popq(RAX);  // Restore result. | 
|   566   } |   566   } | 
|   567   __ LeaveFrame(); |   567   __ LeaveFrame(); | 
|   568  |   568  | 
|   569   __ ret(); |   569   __ ret(); | 
| (...skipping 1355 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1925 void StubCode::GenerateJumpToErrorHandlerStub(Assembler* assembler) { |  1925 void StubCode::GenerateJumpToErrorHandlerStub(Assembler* assembler) { | 
|  1926   __ movq(RAX, RCX);  // error object. |  1926   __ movq(RAX, RCX);  // error object. | 
|  1927   __ movq(RBP, RDX);  // target frame_pointer. |  1927   __ movq(RBP, RDX);  // target frame_pointer. | 
|  1928   __ movq(RSP, RSI);  // target stack_pointer. |  1928   __ movq(RSP, RSI);  // target stack_pointer. | 
|  1929   __ jmp(RDI);  // Jump to the exception handler code. |  1929   __ jmp(RDI);  // Jump to the exception handler code. | 
|  1930 } |  1930 } | 
|  1931  |  1931  | 
|  1932 }  // namespace dart |  1932 }  // namespace dart | 
|  1933  |  1933  | 
|  1934 #endif  // defined TARGET_ARCH_X64 |  1934 #endif  // defined TARGET_ARCH_X64 | 
| OLD | NEW |