Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(233)

Side by Side Diff: runtime/vm/assembler_x64.h

Issue 574843002: Fix x64 patching of asllocation stub: the pool pointer must be set-up before patching jump is execu… (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 #ifndef VM_ASSEMBLER_X64_H_ 5 #ifndef VM_ASSEMBLER_X64_H_
6 #define VM_ASSEMBLER_X64_H_ 6 #define VM_ASSEMBLER_X64_H_
7 7
8 #ifndef VM_ASSEMBLER_H_ 8 #ifndef VM_ASSEMBLER_H_
9 #error Do not include assembler_x64.h directly; use assembler.h instead. 9 #error Do not include assembler_x64.h directly; use assembler.h instead.
10 #endif 10 #endif
(...skipping 838 matching lines...) Expand 10 before | Expand all | Expand 10 after
849 // ret PC 849 // ret PC
850 // ..... 850 // .....
851 // This code sets this up with the sequence: 851 // This code sets this up with the sequence:
852 // pushq rbp 852 // pushq rbp
853 // movq rbp, rsp 853 // movq rbp, rsp
854 // pushq immediate(0) 854 // pushq immediate(0)
855 // ..... 855 // .....
856 void EnterStubFrame(bool load_pp = false); 856 void EnterStubFrame(bool load_pp = false);
857 void LeaveStubFrame(); 857 void LeaveStubFrame();
858 858
859 // Loads pool pointer in 'temp_pp', destroys temp_pc.
860 void SetupPP(Register temp_pp, Register temp_pc);
861
859 // Instruction pattern from entrypoint is used in dart frame prologues 862 // Instruction pattern from entrypoint is used in dart frame prologues
860 // to set up the frame and save a PC which can be used to figure out the 863 // to set up the frame and save a PC which can be used to figure out the
861 // RawInstruction object corresponding to the code running in the frame. 864 // RawInstruction object corresponding to the code running in the frame.
862 // entrypoint: 865 // entrypoint:
863 // pushq rbp (size is 1 byte) 866 // pushq rbp (size is 1 byte)
864 // movq rbp, rsp (size is 3 bytes) 867 // movq rbp, rsp (size is 3 bytes)
865 // call L (size is 5 bytes) 868 // call L (size is 5 bytes)
866 // L: 869 // L:
867 static const intptr_t kEntryPointToPcMarkerOffset = 9; 870 static const intptr_t kEntryPointToPcMarkerOffset = 9;
868 static intptr_t EntryPointToPcMarkerOffset() { 871 static intptr_t EntryPointToPcMarkerOffset() {
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
1126 } 1129 }
1127 1130
1128 1131
1129 inline void Assembler::EmitOperandSizeOverride() { 1132 inline void Assembler::EmitOperandSizeOverride() {
1130 EmitUint8(0x66); 1133 EmitUint8(0x66);
1131 } 1134 }
1132 1135
1133 } // namespace dart 1136 } // namespace dart
1134 1137
1135 #endif // VM_ASSEMBLER_X64_H_ 1138 #endif // VM_ASSEMBLER_X64_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698