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

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

Issue 11412106: Support VTune's JIT interface. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Address comments Created 8 years 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
« no previous file with comments | « runtime/vm/assembler_x64.h ('k') | runtime/vm/code_observers.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/heap.h" 9 #include "vm/heap.h"
10 #include "vm/memory_region.h" 10 #include "vm/memory_region.h"
(...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after
321 EmitOperand(0, operand); 321 EmitOperand(0, operand);
322 } else { 322 } else {
323 EmitRegisterREX(dst, REX_W); 323 EmitRegisterREX(dst, REX_W);
324 EmitUint8(0xB8 | (dst & 7)); 324 EmitUint8(0xB8 | (dst & 7));
325 } 325 }
326 EmitImmediate(imm); 326 EmitImmediate(imm);
327 } 327 }
328 328
329 329
330 // Use 0x89 encoding (instead of 0x8B encoding), which is expected by gdb64 330 // Use 0x89 encoding (instead of 0x8B encoding), which is expected by gdb64
331 // older than 7.3.1-gg5 when disassembling a function's prolog (movq rbp, rsp) 331 // older than 7.3.1-gg5 when disassembling a function's prologue (movq rbp, rsp)
332 // for proper unwinding of Dart frames (use --generate_gdb_symbols and -O0). 332 // for proper unwinding of Dart frames (use --generate_gdb_symbols and -O0).
333 void Assembler::movq(Register dst, Register src) { 333 void Assembler::movq(Register dst, Register src) {
334 AssemblerBuffer::EnsureCapacity ensured(&buffer_); 334 AssemblerBuffer::EnsureCapacity ensured(&buffer_);
335 Operand operand(dst); 335 Operand operand(dst);
336 EmitOperandREX(src, operand, REX_W); 336 EmitOperandREX(src, operand, REX_W);
337 EmitUint8(0x89); 337 EmitUint8(0x89);
338 EmitOperand(src & 7, operand); 338 EmitOperand(src & 7, operand);
339 } 339 }
340 340
341 341
(...skipping 1450 matching lines...) Expand 10 before | Expand all | Expand 10 after
1792 int position = label->NearPosition(); 1792 int position = label->NearPosition();
1793 int offset = bound - (position + 1); 1793 int offset = bound - (position + 1);
1794 ASSERT(Utils::IsInt(8, offset)); 1794 ASSERT(Utils::IsInt(8, offset));
1795 buffer_.Store<int8_t>(position, offset); 1795 buffer_.Store<int8_t>(position, offset);
1796 } 1796 }
1797 label->BindTo(bound); 1797 label->BindTo(bound);
1798 } 1798 }
1799 1799
1800 1800
1801 void Assembler::EnterFrame(intptr_t frame_size) { 1801 void Assembler::EnterFrame(intptr_t frame_size) {
1802 if (prolog_offset_ == -1) { 1802 if (prologue_offset_ == -1) {
1803 prolog_offset_ = CodeSize(); 1803 prologue_offset_ = CodeSize();
1804 } 1804 }
1805 pushq(RBP); 1805 pushq(RBP);
1806 movq(RBP, RSP); 1806 movq(RBP, RSP);
1807 if (frame_size != 0) { 1807 if (frame_size != 0) {
1808 Immediate frame_space(frame_size); 1808 Immediate frame_space(frame_size);
1809 subq(RSP, frame_space); 1809 subq(RSP, frame_space);
1810 } 1810 }
1811 } 1811 }
1812 1812
1813 1813
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after
2110 2110
2111 const char* Assembler::XmmRegisterName(XmmRegister reg) { 2111 const char* Assembler::XmmRegisterName(XmmRegister reg) {
2112 ASSERT((0 <= reg) && (reg < kNumberOfXmmRegisters)); 2112 ASSERT((0 <= reg) && (reg < kNumberOfXmmRegisters));
2113 return xmm_reg_names[reg]; 2113 return xmm_reg_names[reg];
2114 } 2114 }
2115 2115
2116 2116
2117 } // namespace dart 2117 } // namespace dart
2118 2118
2119 #endif // defined TARGET_ARCH_X64 2119 #endif // defined TARGET_ARCH_X64
OLDNEW
« no previous file with comments | « runtime/vm/assembler_x64.h ('k') | runtime/vm/code_observers.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698