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

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

Issue 2856543002: Use off-heap data for class check instructions (Closed)
Patch Set: Feedback from Slava: rejig inheritance of CallTargets Created 3 years, 7 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
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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" // NOLINT 5 #include "vm/globals.h" // NOLINT
6 #if defined(TARGET_ARCH_ARM64) 6 #if defined(TARGET_ARCH_ARM64)
7 7
8 #include "vm/assembler.h" 8 #include "vm/assembler.h"
9 #include "vm/cpu.h" 9 #include "vm/cpu.h"
10 #include "vm/longjump.h" 10 #include "vm/longjump.h"
(...skipping 602 matching lines...) Expand 10 before | Expand all | Expand 10 after
613 const Object& equivalence) { 613 const Object& equivalence) {
614 const Code& target = Code::ZoneHandle(stub_entry.code()); 614 const Code& target = Code::ZoneHandle(stub_entry.code());
615 const int32_t offset = ObjectPool::element_offset( 615 const int32_t offset = ObjectPool::element_offset(
616 object_pool_wrapper_.FindObject(target, equivalence)); 616 object_pool_wrapper_.FindObject(target, equivalence));
617 LoadWordFromPoolOffset(CODE_REG, offset); 617 LoadWordFromPoolOffset(CODE_REG, offset);
618 ldr(TMP, FieldAddress(CODE_REG, Code::entry_point_offset())); 618 ldr(TMP, FieldAddress(CODE_REG, Code::entry_point_offset()));
619 blr(TMP); 619 blr(TMP);
620 } 620 }
621 621
622 622
623 void Assembler::AddImmediate(Register dest, int64_t imm) {
624 AddImmediate(dest, dest, imm);
625 }
626
627
623 void Assembler::AddImmediate(Register dest, Register rn, int64_t imm) { 628 void Assembler::AddImmediate(Register dest, Register rn, int64_t imm) {
624 Operand op; 629 Operand op;
625 if (imm == 0) { 630 if (imm == 0) {
626 if (dest != rn) { 631 if (dest != rn) {
627 mov(dest, rn); 632 mov(dest, rn);
628 } 633 }
629 return; 634 return;
630 } 635 }
631 if (Operand::CanHold(imm, kXRegSizeInBits, &op) == Operand::Immediate) { 636 if (Operand::CanHold(imm, kXRegSizeInBits, &op) == Operand::Immediate) {
632 add(dest, rn, op); 637 add(dest, rn, op);
(...skipping 938 matching lines...) Expand 10 before | Expand all | Expand 10 after
1571 str(tmp, Address(addr, 7), kUnsignedByte); 1576 str(tmp, Address(addr, 7), kUnsignedByte);
1572 if (sz == kDoubleWord) { 1577 if (sz == kDoubleWord) {
1573 return; 1578 return;
1574 } 1579 }
1575 UNIMPLEMENTED(); 1580 UNIMPLEMENTED();
1576 } 1581 }
1577 1582
1578 } // namespace dart 1583 } // namespace dart
1579 1584
1580 #endif // defined TARGET_ARCH_ARM64 1585 #endif // defined TARGET_ARCH_ARM64
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698