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

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

Issue 2869683004: [arm] Share constant pool entries in snapshot. (Closed)
Patch Set: 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
« no previous file with comments | « no previous file | src/arm/assembler-arm.cc » ('j') | src/interpreter/setup-interpreter-internal.cc » ('J')
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 1704 matching lines...) Expand 10 before | Expand all | Expand 10 after
1715 // containers for constants and code target addresses until they are emitted 1715 // containers for constants and code target addresses until they are emitted
1716 // to the constant pool. These records are temporarily stored in a separate 1716 // to the constant pool. These records are temporarily stored in a separate
1717 // buffer until a constant pool is emitted. 1717 // buffer until a constant pool is emitted.
1718 // If every instruction in a long sequence is accessing the pool, we need one 1718 // If every instruction in a long sequence is accessing the pool, we need one
1719 // pending relocation entry per instruction. 1719 // pending relocation entry per instruction.
1720 1720
1721 // The buffers of pending constant pool entries. 1721 // The buffers of pending constant pool entries.
1722 std::vector<ConstantPoolEntry> pending_32_bit_constants_; 1722 std::vector<ConstantPoolEntry> pending_32_bit_constants_;
1723 std::vector<ConstantPoolEntry> pending_64_bit_constants_; 1723 std::vector<ConstantPoolEntry> pending_64_bit_constants_;
1724 1724
1725 // Map of address of handle to index in pending_32_bit_constants_.
1726 std::map<Address, int> handle_to_index_map_;
1727
1725 private: 1728 private:
1726 // Avoid overflows for displacements etc. 1729 // Avoid overflows for displacements etc.
1727 static const int kMaximalBufferSize = 512 * MB; 1730 static const int kMaximalBufferSize = 512 * MB;
1728 1731
1729 int next_buffer_check_; // pc offset of next buffer check 1732 int next_buffer_check_; // pc offset of next buffer check
1730 1733
1731 // Constant pool generation 1734 // Constant pool generation
1732 // Pools are emitted in the instruction stream, preferably after unconditional 1735 // Pools are emitted in the instruction stream, preferably after unconditional
1733 // jumps or after returns from functions (in dead code locations). 1736 // jumps or after returns from functions (in dead code locations).
1734 // If a long code sequence does not contain unconditional jumps, it is 1737 // If a long code sequence does not contain unconditional jumps, it is
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1773 void addrmod4(Instr instr, Register rn, RegList rl); 1776 void addrmod4(Instr instr, Register rn, RegList rl);
1774 void addrmod5(Instr instr, CRegister crd, const MemOperand& x); 1777 void addrmod5(Instr instr, CRegister crd, const MemOperand& x);
1775 1778
1776 // Labels 1779 // Labels
1777 void print(Label* L); 1780 void print(Label* L);
1778 void bind_to(Label* L, int pos); 1781 void bind_to(Label* L, int pos);
1779 void next(Label* L); 1782 void next(Label* L);
1780 1783
1781 // Record reloc info for current pc_ 1784 // Record reloc info for current pc_
1782 void RecordRelocInfo(RelocInfo::Mode rmode, intptr_t data = 0); 1785 void RecordRelocInfo(RelocInfo::Mode rmode, intptr_t data = 0);
1783 ConstantPoolEntry::Access ConstantPoolAddEntry(int position, 1786 void ConstantPoolAddEntry(int position, RelocInfo::Mode rmode,
1784 RelocInfo::Mode rmode, 1787 intptr_t value);
1785 intptr_t value); 1788 void ConstantPoolAddEntry(int position, double value);
1786 ConstantPoolEntry::Access ConstantPoolAddEntry(int position, double value);
1787 1789
1788 friend class RelocInfo; 1790 friend class RelocInfo;
1789 friend class CodePatcher; 1791 friend class CodePatcher;
1790 friend class BlockConstPoolScope; 1792 friend class BlockConstPoolScope;
1791 friend class EnsureSpace; 1793 friend class EnsureSpace;
1792 }; 1794 };
1793 1795
1794 constexpr int kNoCodeAgeSequenceLength = 3 * Assembler::kInstrSize; 1796 constexpr int kNoCodeAgeSequenceLength = 3 * Assembler::kInstrSize;
1795 1797
1796 class EnsureSpace BASE_EMBEDDED { 1798 class EnsureSpace BASE_EMBEDDED {
1797 public: 1799 public:
1798 INLINE(explicit EnsureSpace(Assembler* assembler)); 1800 INLINE(explicit EnsureSpace(Assembler* assembler));
1799 }; 1801 };
1800 1802
1801 class PatchingAssembler : public Assembler { 1803 class PatchingAssembler : public Assembler {
1802 public: 1804 public:
1803 PatchingAssembler(IsolateData isolate_data, byte* address, int instructions); 1805 PatchingAssembler(IsolateData isolate_data, byte* address, int instructions);
1804 ~PatchingAssembler(); 1806 ~PatchingAssembler();
1805 1807
1806 void Emit(Address addr); 1808 void Emit(Address addr);
1807 void FlushICache(Isolate* isolate); 1809 void FlushICache(Isolate* isolate);
1808 }; 1810 };
1809 1811
1810 1812
1811 } // namespace internal 1813 } // namespace internal
1812 } // namespace v8 1814 } // namespace v8
1813 1815
1814 #endif // V8_ARM_ASSEMBLER_ARM_H_ 1816 #endif // V8_ARM_ASSEMBLER_ARM_H_
OLDNEW
« no previous file with comments | « no previous file | src/arm/assembler-arm.cc » ('j') | src/interpreter/setup-interpreter-internal.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698