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

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

Issue 484693003: Improve polymorphic inlining of int/int double/double operations. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years, 4 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 #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/compiler.h" 9 #include "vm/compiler.h"
10 #include "vm/dart_entry.h" 10 #include "vm/dart_entry.h"
(...skipping 1498 matching lines...) Expand 10 before | Expand all | Expand 10 after
1509 1509
1510 // Get function and call it, if possible. 1510 // Get function and call it, if possible.
1511 __ movq(RAX, Address(R12, target_offset)); 1511 __ movq(RAX, Address(R12, target_offset));
1512 __ movq(RCX, FieldAddress(RAX, Function::instructions_offset())); 1512 __ movq(RCX, FieldAddress(RAX, Function::instructions_offset()));
1513 // RCX: Target instructions. 1513 // RCX: Target instructions.
1514 __ addq(RCX, Immediate(Instructions::HeaderSize() - kHeapObjectTag)); 1514 __ addq(RCX, Immediate(Instructions::HeaderSize() - kHeapObjectTag));
1515 __ jmp(RCX); 1515 __ jmp(RCX);
1516 } 1516 }
1517 1517
1518 1518
1519 void StubCode::GenerateOneArgUnoptimizedStaticCallStub(Assembler* assembler) {
1520 GenerateUsageCounterIncrement(assembler, RCX);
1521 GenerateNArgsCheckInlineCacheStub(
1522 assembler, 1, kStaticCallMissHandlerOneArgRuntimeEntry);
1523 }
1524
1525
1519 void StubCode::GenerateTwoArgsUnoptimizedStaticCallStub(Assembler* assembler) { 1526 void StubCode::GenerateTwoArgsUnoptimizedStaticCallStub(Assembler* assembler) {
1520 GenerateUsageCounterIncrement(assembler, RCX); 1527 GenerateUsageCounterIncrement(assembler, RCX);
1521 GenerateNArgsCheckInlineCacheStub( 1528 GenerateNArgsCheckInlineCacheStub(
1522 assembler, 2, kStaticCallMissHandlerTwoArgsRuntimeEntry); 1529 assembler, 2, kStaticCallMissHandlerTwoArgsRuntimeEntry);
1523 } 1530 }
1524 1531
1525 1532
1526 // Stub for compiling a function and jumping to the compiled code. 1533 // Stub for compiling a function and jumping to the compiled code.
1527 // RCX: IC-Data (for methods). 1534 // RCX: IC-Data (for methods).
1528 // R10: Arguments descriptor. 1535 // R10: Arguments descriptor.
(...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after
1899 1906
1900 __ movq(left, Address(RSP, 2 * kWordSize)); 1907 __ movq(left, Address(RSP, 2 * kWordSize));
1901 __ movq(right, Address(RSP, 1 * kWordSize)); 1908 __ movq(right, Address(RSP, 1 * kWordSize));
1902 GenerateIdenticalWithNumberCheckStub(assembler, left, right); 1909 GenerateIdenticalWithNumberCheckStub(assembler, left, right);
1903 __ ret(); 1910 __ ret();
1904 } 1911 }
1905 1912
1906 } // namespace dart 1913 } // namespace dart
1907 1914
1908 #endif // defined TARGET_ARCH_X64 1915 #endif // defined TARGET_ARCH_X64
OLDNEW
« runtime/vm/intermediate_language.cc ('K') | « runtime/vm/stub_code_mips.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698