OLD | NEW |
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 615 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
626 } | 626 } |
627 void andw_(Register rd, Register rn, Operand o) { | 627 void andw_(Register rd, Register rn, Operand o) { |
628 EmitLogicalShiftOp(AND, rd, rn, o, kWord); | 628 EmitLogicalShiftOp(AND, rd, rn, o, kWord); |
629 } | 629 } |
630 void bic(Register rd, Register rn, Operand o) { | 630 void bic(Register rd, Register rn, Operand o) { |
631 EmitLogicalShiftOp(BIC, rd, rn, o, kDoubleWord); | 631 EmitLogicalShiftOp(BIC, rd, rn, o, kDoubleWord); |
632 } | 632 } |
633 void orr(Register rd, Register rn, Operand o) { | 633 void orr(Register rd, Register rn, Operand o) { |
634 EmitLogicalShiftOp(ORR, rd, rn, o, kDoubleWord); | 634 EmitLogicalShiftOp(ORR, rd, rn, o, kDoubleWord); |
635 } | 635 } |
| 636 void orrw(Register rd, Register rn, Operand o) { |
| 637 EmitLogicalShiftOp(ORR, rd, rn, o, kWord); |
| 638 } |
636 void orn(Register rd, Register rn, Operand o) { | 639 void orn(Register rd, Register rn, Operand o) { |
637 EmitLogicalShiftOp(ORN, rd, rn, o, kDoubleWord); | 640 EmitLogicalShiftOp(ORN, rd, rn, o, kDoubleWord); |
638 } | 641 } |
639 void eor(Register rd, Register rn, Operand o) { | 642 void eor(Register rd, Register rn, Operand o) { |
640 EmitLogicalShiftOp(EOR, rd, rn, o, kDoubleWord); | 643 EmitLogicalShiftOp(EOR, rd, rn, o, kDoubleWord); |
641 } | 644 } |
642 void eorw(Register rd, Register rn, Operand o) { | 645 void eorw(Register rd, Register rn, Operand o) { |
643 EmitLogicalShiftOp(EOR, rd, rn, o, kWord); | 646 EmitLogicalShiftOp(EOR, rd, rn, o, kWord); |
644 } | 647 } |
645 void eon(Register rd, Register rn, Operand o) { | 648 void eon(Register rd, Register rn, Operand o) { |
(...skipping 685 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1331 Push(TMP); | 1334 Push(TMP); |
1332 } | 1335 } |
1333 void CompareObject(Register reg, const Object& object, Register pp); | 1336 void CompareObject(Register reg, const Object& object, Register pp); |
1334 | 1337 |
1335 void LoadClassId(Register result, Register object, Register pp); | 1338 void LoadClassId(Register result, Register object, Register pp); |
1336 void LoadClassById(Register result, Register class_id, Register pp); | 1339 void LoadClassById(Register result, Register class_id, Register pp); |
1337 void LoadClass(Register result, Register object, Register pp); | 1340 void LoadClass(Register result, Register object, Register pp); |
1338 void CompareClassId(Register object, intptr_t class_id, Register pp); | 1341 void CompareClassId(Register object, intptr_t class_id, Register pp); |
1339 void LoadTaggedClassIdMayBeSmi(Register result, Register object); | 1342 void LoadTaggedClassIdMayBeSmi(Register result, Register object); |
1340 | 1343 |
| 1344 void ComputeRange(Register result, |
| 1345 Register value, |
| 1346 Register scratch, |
| 1347 Label* miss); |
| 1348 |
| 1349 void UpdateRangeFeedback(Register value, |
| 1350 intptr_t idx, |
| 1351 Register ic_data, |
| 1352 Register scratch1, |
| 1353 Register scratch2, |
| 1354 Label* miss); |
| 1355 |
1341 void EnterFrame(intptr_t frame_size); | 1356 void EnterFrame(intptr_t frame_size); |
1342 void LeaveFrame(); | 1357 void LeaveFrame(); |
1343 | 1358 |
1344 // When entering Dart code from C++, we copy the system stack pointer (CSP) | 1359 // When entering Dart code from C++, we copy the system stack pointer (CSP) |
1345 // to the Dart stack pointer (SP), and reserve a little space for the stack | 1360 // to the Dart stack pointer (SP), and reserve a little space for the stack |
1346 // to grow. | 1361 // to grow. |
1347 void SetupDartSP(intptr_t reserved_space) { | 1362 void SetupDartSP(intptr_t reserved_space) { |
1348 ASSERT(Utils::IsAligned(reserved_space, 16)); | 1363 ASSERT(Utils::IsAligned(reserved_space, 16)); |
1349 mov(SP, CSP); | 1364 mov(SP, CSP); |
1350 sub(CSP, CSP, Operand(reserved_space)); | 1365 sub(CSP, CSP, Operand(reserved_space)); |
(...skipping 602 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1953 Register value, | 1968 Register value, |
1954 Label* no_update); | 1969 Label* no_update); |
1955 | 1970 |
1956 DISALLOW_ALLOCATION(); | 1971 DISALLOW_ALLOCATION(); |
1957 DISALLOW_COPY_AND_ASSIGN(Assembler); | 1972 DISALLOW_COPY_AND_ASSIGN(Assembler); |
1958 }; | 1973 }; |
1959 | 1974 |
1960 } // namespace dart | 1975 } // namespace dart |
1961 | 1976 |
1962 #endif // VM_ASSEMBLER_ARM64_H_ | 1977 #endif // VM_ASSEMBLER_ARM64_H_ |
OLD | NEW |