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

Side by Side Diff: src/arm/assembler-arm.h

Issue 2816703002: [arm] Remove embedded constant pool support. (Closed)
Patch Set: [arm] Remove embedded constant pool support. Created 3 years, 8 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
« no previous file with comments | « no previous file | src/arm/assembler-arm.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) 1994-2006 Sun Microsystems Inc. 1 // Copyright (c) 1994-2006 Sun Microsystems Inc.
2 // All Rights Reserved. 2 // All Rights Reserved.
3 // 3 //
4 // Redistribution and use in source and binary forms, with or without 4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions 5 // modification, are permitted provided that the following conditions
6 // are met: 6 // are met:
7 // 7 //
8 // - Redistributions of source code must retain the above copyright notice, 8 // - Redistributions of source code must retain the above copyright notice,
9 // this list of conditions and the following disclaimer. 9 // this list of conditions and the following disclaimer.
10 // 10 //
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 void set_code(int code) { 135 void set_code(int code) {
136 reg_code = code; 136 reg_code = code;
137 DCHECK(is_valid()); 137 DCHECK(is_valid());
138 } 138 }
139 139
140 // Unfortunately we can't make this private in a struct. 140 // Unfortunately we can't make this private in a struct.
141 int reg_code; 141 int reg_code;
142 }; 142 };
143 143
144 // r7: context register 144 // r7: context register
145 // r8: constant pool pointer register if FLAG_enable_embedded_constant_pool.
146 // r9: lithium scratch 145 // r9: lithium scratch
147 #define DECLARE_REGISTER(R) constexpr Register R = {Register::kCode_##R}; 146 #define DECLARE_REGISTER(R) constexpr Register R = {Register::kCode_##R};
148 GENERAL_REGISTERS(DECLARE_REGISTER) 147 GENERAL_REGISTERS(DECLARE_REGISTER)
149 #undef DECLARE_REGISTER 148 #undef DECLARE_REGISTER
150 constexpr Register no_reg = {Register::kCode_no_reg}; 149 constexpr Register no_reg = {Register::kCode_no_reg};
151 150
152 constexpr bool kSimpleFPAliasing = false; 151 constexpr bool kSimpleFPAliasing = false;
153 constexpr bool kSimdMaskRegisters = false; 152 constexpr bool kSimdMaskRegisters = false;
154 153
155 // Single word VFP register. 154 // Single word VFP register.
(...skipping 1395 matching lines...) Expand 10 before | Expand all | Expand 10 after
1551 } 1550 }
1552 static Instr instr_at(byte* pc) { return *reinterpret_cast<Instr*>(pc); } 1551 static Instr instr_at(byte* pc) { return *reinterpret_cast<Instr*>(pc); }
1553 static void instr_at_put(byte* pc, Instr instr) { 1552 static void instr_at_put(byte* pc, Instr instr) {
1554 *reinterpret_cast<Instr*>(pc) = instr; 1553 *reinterpret_cast<Instr*>(pc) = instr;
1555 } 1554 }
1556 static Condition GetCondition(Instr instr); 1555 static Condition GetCondition(Instr instr);
1557 static bool IsBranch(Instr instr); 1556 static bool IsBranch(Instr instr);
1558 static int GetBranchOffset(Instr instr); 1557 static int GetBranchOffset(Instr instr);
1559 static bool IsLdrRegisterImmediate(Instr instr); 1558 static bool IsLdrRegisterImmediate(Instr instr);
1560 static bool IsVldrDRegisterImmediate(Instr instr); 1559 static bool IsVldrDRegisterImmediate(Instr instr);
1561 static Instr GetConsantPoolLoadPattern();
1562 static Instr GetConsantPoolLoadMask();
1563 static bool IsLdrPpRegOffset(Instr instr);
1564 static Instr GetLdrPpRegOffsetPattern();
1565 static bool IsLdrPpImmediateOffset(Instr instr);
1566 static bool IsVldrDPpImmediateOffset(Instr instr);
1567 static int GetLdrRegisterImmediateOffset(Instr instr); 1560 static int GetLdrRegisterImmediateOffset(Instr instr);
1568 static int GetVldrDRegisterImmediateOffset(Instr instr); 1561 static int GetVldrDRegisterImmediateOffset(Instr instr);
1569 static Instr SetLdrRegisterImmediateOffset(Instr instr, int offset); 1562 static Instr SetLdrRegisterImmediateOffset(Instr instr, int offset);
1570 static Instr SetVldrDRegisterImmediateOffset(Instr instr, int offset); 1563 static Instr SetVldrDRegisterImmediateOffset(Instr instr, int offset);
1571 static bool IsStrRegisterImmediate(Instr instr); 1564 static bool IsStrRegisterImmediate(Instr instr);
1572 static Instr SetStrRegisterImmediateOffset(Instr instr, int offset); 1565 static Instr SetStrRegisterImmediateOffset(Instr instr, int offset);
1573 static bool IsAddRegisterImmediate(Instr instr); 1566 static bool IsAddRegisterImmediate(Instr instr);
1574 static Instr SetAddRegisterImmediateOffset(Instr instr, int offset); 1567 static Instr SetAddRegisterImmediateOffset(Instr instr, int offset);
1575 static Register GetRd(Instr instr); 1568 static Register GetRd(Instr instr);
1576 static Register GetRn(Instr instr); 1569 static Register GetRn(Instr instr);
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1621 1614
1622 // Check if is time to emit a constant pool. 1615 // Check if is time to emit a constant pool.
1623 void CheckConstPool(bool force_emit, bool require_jump); 1616 void CheckConstPool(bool force_emit, bool require_jump);
1624 1617
1625 void MaybeCheckConstPool() { 1618 void MaybeCheckConstPool() {
1626 if (pc_offset() >= next_buffer_check_) { 1619 if (pc_offset() >= next_buffer_check_) {
1627 CheckConstPool(false, true); 1620 CheckConstPool(false, true);
1628 } 1621 }
1629 } 1622 }
1630 1623
1631 int EmitEmbeddedConstantPool() {
1632 DCHECK(FLAG_enable_embedded_constant_pool);
1633 return constant_pool_builder_.Emit(this);
1634 }
1635
1636 bool ConstantPoolAccessIsInOverflow() const {
1637 return constant_pool_builder_.NextAccess(ConstantPoolEntry::INTPTR) ==
1638 ConstantPoolEntry::OVERFLOWED;
1639 }
1640
1641 void PatchConstantPoolAccessInstruction(int pc_offset, int offset, 1624 void PatchConstantPoolAccessInstruction(int pc_offset, int offset,
1642 ConstantPoolEntry::Access access, 1625 ConstantPoolEntry::Access access,
1643 ConstantPoolEntry::Type type); 1626 ConstantPoolEntry::Type type) {
1627 // No embedded constant pool support.
1628 UNREACHABLE();
1629 }
1644 1630
1645 protected: 1631 protected:
1646 // Relocation for a type-recording IC has the AST id added to it. This 1632 // Relocation for a type-recording IC has the AST id added to it. This
1647 // member variable is a way to pass the information from the call site to 1633 // member variable is a way to pass the information from the call site to
1648 // the relocation info. 1634 // the relocation info.
1649 TypeFeedbackId recorded_ast_id_; 1635 TypeFeedbackId recorded_ast_id_;
1650 1636
1651 int buffer_space() const { return reloc_info_writer.pos() - pc_; } 1637 int buffer_space() const { return reloc_info_writer.pos() - pc_; }
1652 1638
1653 // Decode branch instruction at pos and return branch target pos 1639 // Decode branch instruction at pos and return branch target pos
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
1756 1742
1757 // Emission of the constant pool may be blocked in some code sequences. 1743 // Emission of the constant pool may be blocked in some code sequences.
1758 int const_pool_blocked_nesting_; // Block emission if this is not zero. 1744 int const_pool_blocked_nesting_; // Block emission if this is not zero.
1759 int no_const_pool_before_; // Block emission before this pc offset. 1745 int no_const_pool_before_; // Block emission before this pc offset.
1760 1746
1761 // Keep track of the first instruction requiring a constant pool entry 1747 // Keep track of the first instruction requiring a constant pool entry
1762 // since the previous constant pool was emitted. 1748 // since the previous constant pool was emitted.
1763 int first_const_pool_32_use_; 1749 int first_const_pool_32_use_;
1764 int first_const_pool_64_use_; 1750 int first_const_pool_64_use_;
1765 1751
1766 ConstantPoolBuilder constant_pool_builder_;
1767
1768 // The bound position, before this we cannot do instruction elimination. 1752 // The bound position, before this we cannot do instruction elimination.
1769 int last_bound_pos_; 1753 int last_bound_pos_;
1770 1754
1771 inline void CheckBuffer(); 1755 inline void CheckBuffer();
1772 void GrowBuffer(); 1756 void GrowBuffer();
1773 1757
1774 // 32-bit immediate values 1758 // 32-bit immediate values
1775 void move_32_bit_immediate(Register rd, 1759 void move_32_bit_immediate(Register rd,
1776 const Operand& x, 1760 const Operand& x,
1777 Condition cond = al); 1761 Condition cond = al);
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
1815 1799
1816 void Emit(Address addr); 1800 void Emit(Address addr);
1817 void FlushICache(Isolate* isolate); 1801 void FlushICache(Isolate* isolate);
1818 }; 1802 };
1819 1803
1820 1804
1821 } // namespace internal 1805 } // namespace internal
1822 } // namespace v8 1806 } // namespace v8
1823 1807
1824 #endif // V8_ARM_ASSEMBLER_ARM_H_ 1808 #endif // V8_ARM_ASSEMBLER_ARM_H_
OLDNEW
« no previous file with comments | « no previous file | src/arm/assembler-arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698