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

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

Issue 2452453002: Support unaligned integer loads on ARM and MIPS. (Closed)
Patch Set: review Created 4 years, 1 month 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
« no previous file with comments | « runtime/vm/assembler_arm_test.cc ('k') | runtime/vm/assembler_mips.cc » ('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) 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 #ifndef RUNTIME_VM_ASSEMBLER_MIPS_H_ 5 #ifndef RUNTIME_VM_ASSEMBLER_MIPS_H_
6 #define RUNTIME_VM_ASSEMBLER_MIPS_H_ 6 #define RUNTIME_VM_ASSEMBLER_MIPS_H_
7 7
8 #ifndef RUNTIME_VM_ASSEMBLER_H_ 8 #ifndef RUNTIME_VM_ASSEMBLER_H_
9 #error Do not include assembler_mips.h directly; use assembler.h instead. 9 #error Do not include assembler_mips.h directly; use assembler.h instead.
10 #endif 10 #endif
(...skipping 1581 matching lines...) Expand 10 before | Expand all | Expand 10 after
1592 // Set up a Dart frame for a function compiled for on-stack replacement. 1592 // Set up a Dart frame for a function compiled for on-stack replacement.
1593 // The frame layout is a normal Dart frame, but the frame is partially set 1593 // The frame layout is a normal Dart frame, but the frame is partially set
1594 // up on entry (it is the frame of the unoptimized code). 1594 // up on entry (it is the frame of the unoptimized code).
1595 void EnterOsrFrame(intptr_t extra_size); 1595 void EnterOsrFrame(intptr_t extra_size);
1596 1596
1597 Address ElementAddressForIntIndex(bool is_external, 1597 Address ElementAddressForIntIndex(bool is_external,
1598 intptr_t cid, 1598 intptr_t cid,
1599 intptr_t index_scale, 1599 intptr_t index_scale,
1600 Register array, 1600 Register array,
1601 intptr_t index) const; 1601 intptr_t index) const;
1602 void LoadElementAddressForIntIndex(Register address,
1603 bool is_external,
1604 intptr_t cid,
1605 intptr_t index_scale,
1606 Register array,
1607 intptr_t index);
1602 Address ElementAddressForRegIndex(bool is_load, 1608 Address ElementAddressForRegIndex(bool is_load,
1603 bool is_external, 1609 bool is_external,
1604 intptr_t cid, 1610 intptr_t cid,
1605 intptr_t index_scale, 1611 intptr_t index_scale,
1606 Register array, 1612 Register array,
1607 Register index); 1613 Register index);
1614 void LoadElementAddressForRegIndex(Register address,
1615 bool is_load,
1616 bool is_external,
1617 intptr_t cid,
1618 intptr_t index_scale,
1619 Register array,
1620 Register index);
1621
1622 void LoadHalfWordUnaligned(Register dst, Register addr, Register tmp);
1623 void LoadHalfWordUnsignedUnaligned(Register dst, Register addr, Register tmp);
1624 void StoreHalfWordUnaligned(Register src, Register addr, Register tmp);
1625 void LoadWordUnaligned(Register dst, Register addr, Register tmp);
1626 void StoreWordUnaligned(Register src, Register addr, Register tmp);
1608 1627
1609 static Address VMTagAddress() { 1628 static Address VMTagAddress() {
1610 return Address(THR, Thread::vm_tag_offset()); 1629 return Address(THR, Thread::vm_tag_offset());
1611 } 1630 }
1612 1631
1613 // On some other platforms, we draw a distinction between safe and unsafe 1632 // On some other platforms, we draw a distinction between safe and unsafe
1614 // smis. 1633 // smis.
1615 static bool IsSafe(const Object& object) { return true; } 1634 static bool IsSafe(const Object& object) { return true; }
1616 static bool IsSafeSmi(const Object& object) { return object.IsSmi(); } 1635 static bool IsSafeSmi(const Object& object) { return object.IsSmi(); }
1617 1636
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
1758 Register value, 1777 Register value,
1759 Label* no_update); 1778 Label* no_update);
1760 1779
1761 DISALLOW_ALLOCATION(); 1780 DISALLOW_ALLOCATION();
1762 DISALLOW_COPY_AND_ASSIGN(Assembler); 1781 DISALLOW_COPY_AND_ASSIGN(Assembler);
1763 }; 1782 };
1764 1783
1765 } // namespace dart 1784 } // namespace dart
1766 1785
1767 #endif // RUNTIME_VM_ASSEMBLER_MIPS_H_ 1786 #endif // RUNTIME_VM_ASSEMBLER_MIPS_H_
OLDNEW
« no previous file with comments | « runtime/vm/assembler_arm_test.cc ('k') | runtime/vm/assembler_mips.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698