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

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

Issue 579243003: Fixes a bug in CheckClassInstr on arm64. (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) 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 #ifndef VM_ASSEMBLER_ARM64_H_ 5 #ifndef VM_ASSEMBLER_ARM64_H_
6 #define VM_ASSEMBLER_ARM64_H_ 6 #define VM_ASSEMBLER_ARM64_H_
7 7
8 #ifndef VM_ASSEMBLER_H_ 8 #ifndef VM_ASSEMBLER_H_
9 #error Do not include assembler_arm64.h directly; use assembler.h instead. 9 #error Do not include assembler_arm64.h directly; use assembler.h instead.
10 #endif 10 #endif
(...skipping 984 matching lines...) Expand 10 before | Expand all | Expand 10 after
995 ldr(PP, Address(SP, 1 * kWordSize, Address::PostIndex)); 995 ldr(PP, Address(SP, 1 * kWordSize, Address::PostIndex));
996 sub(PP, PP, Operand(kHeapObjectTag)); 996 sub(PP, PP, Operand(kHeapObjectTag));
997 } 997 }
998 void tst(Register rn, Operand o) { 998 void tst(Register rn, Operand o) {
999 ands(ZR, rn, o); 999 ands(ZR, rn, o);
1000 } 1000 }
1001 void tsti(Register rn, uint64_t imm) { 1001 void tsti(Register rn, uint64_t imm) {
1002 andis(ZR, rn, imm); 1002 andis(ZR, rn, imm);
1003 } 1003 }
1004 1004
1005 void Lsl(Register rd, Register rn, int shift) { 1005 void LslImmediate(Register rd, Register rn, int shift) {
1006 add(rd, ZR, Operand(rn, LSL, shift)); 1006 add(rd, ZR, Operand(rn, LSL, shift));
1007 } 1007 }
1008 void Lslw(Register rd, Register rn, int shift) { 1008 void LsrImmediate(Register rd, Register rn, int shift) {
1009 addw(rd, ZR, Operand(rn, LSL, shift));
1010 }
1011 void Lsr(Register rd, Register rn, int shift) {
1012 add(rd, ZR, Operand(rn, LSR, shift)); 1009 add(rd, ZR, Operand(rn, LSR, shift));
1013 } 1010 }
1014 void Lsrw(Register rd, Register rn, int shift) { 1011 void AsrImmediate(Register rd, Register rn, int shift) {
1015 ASSERT((shift >= 0) && (shift < 32));
1016 addw(rd, ZR, Operand(rn, LSR, shift));
1017 }
1018 void Asr(Register rd, Register rn, int shift) {
1019 add(rd, ZR, Operand(rn, ASR, shift)); 1012 add(rd, ZR, Operand(rn, ASR, shift));
1020 } 1013 }
1021 1014
1022 void VRecps(VRegister vd, VRegister vn); 1015 void VRecps(VRegister vd, VRegister vn);
1023 void VRSqrts(VRegister vd, VRegister vn); 1016 void VRSqrts(VRegister vd, VRegister vn);
1024 1017
1025 void SmiUntag(Register reg) { 1018 void SmiUntag(Register reg) {
1026 Asr(reg, reg, kSmiTagSize); 1019 AsrImmediate(reg, reg, kSmiTagSize);
1027 } 1020 }
1028 void SmiUntag(Register dst, Register src) { 1021 void SmiUntag(Register dst, Register src) {
1029 Asr(dst, src, kSmiTagSize); 1022 AsrImmediate(dst, src, kSmiTagSize);
1030 } 1023 }
1031 void SmiTag(Register reg) { 1024 void SmiTag(Register reg) {
1032 Lsl(reg, reg, kSmiTagSize); 1025 LslImmediate(reg, reg, kSmiTagSize);
1033 } 1026 }
1034 1027
1035 // Branching to ExternalLabels. 1028 // Branching to ExternalLabels.
1036 void Branch(const ExternalLabel* label, Register pp) { 1029 void Branch(const ExternalLabel* label, Register pp) {
1037 LoadExternalLabel(TMP, label, kNotPatchable, pp); 1030 LoadExternalLabel(TMP, label, kNotPatchable, pp);
1038 br(TMP); 1031 br(TMP);
1039 } 1032 }
1040 1033
1041 // Fixed length branch to label. 1034 // Fixed length branch to label.
1042 void BranchPatchable(const ExternalLabel* label) { 1035 void BranchPatchable(const ExternalLabel* label) {
(...skipping 665 matching lines...) Expand 10 before | Expand all | Expand 10 after
1708 Register value, 1701 Register value,
1709 Label* no_update); 1702 Label* no_update);
1710 1703
1711 DISALLOW_ALLOCATION(); 1704 DISALLOW_ALLOCATION();
1712 DISALLOW_COPY_AND_ASSIGN(Assembler); 1705 DISALLOW_COPY_AND_ASSIGN(Assembler);
1713 }; 1706 };
1714 1707
1715 } // namespace dart 1708 } // namespace dart
1716 1709
1717 #endif // VM_ASSEMBLER_ARM64_H_ 1710 #endif // VM_ASSEMBLER_ARM64_H_
OLDNEW
« no previous file with comments | « no previous file | runtime/vm/intermediate_language_arm64.cc » ('j') | runtime/vm/intermediate_language_arm64.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698