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

Unified Diff: src/arm/assembler-arm.h

Issue 1128009: Replace the constant pool access ldr instructions with movw/movt, and remove ... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « AUTHORS ('k') | src/arm/assembler-arm.cc » ('j') | src/arm/assembler-arm.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/arm/assembler-arm.h
===================================================================
--- src/arm/assembler-arm.h (revision 4311)
+++ src/arm/assembler-arm.h (working copy)
@@ -511,6 +511,11 @@
extern const Instr kMovLrPc;
extern const Instr kLdrPCMask;
extern const Instr kLdrPCPattern;
+extern const Instr kLdrMask;
+extern const Instr kLdrPattern;
+extern const Instr kMovwMovtMask;
+extern const Instr kMovwPattern;
+extern const Instr kMovtPattern;
extern const Instr kBlxRegMask;
extern const Instr kBlxRegPattern;
@@ -570,7 +575,8 @@
// Read/Modify the code target address in the branch/call instruction at pc.
INLINE(static Address target_address_at(Address pc));
- INLINE(static void set_target_address_at(Address pc, Address target));
+ INLINE(static void set_target_address_at(Address pc, Address target,
+ bool need_icache_flush = true));
// This sets the branch destination (which is in the constant pool on ARM).
// This is for calls and branches within generated code.
@@ -706,11 +712,14 @@
}
void mov(Register dst, const Operand& src,
- SBit s = LeaveCC, Condition cond = al);
+ SBit s = LeaveCC, Condition cond = al, bool use_movw_movt = true);
Erik Corry 2010/05/03 10:06:28 Having bool arguments makes the code unreadable at
void mov(Register dst, Register src, SBit s = LeaveCC, Condition cond = al) {
mov(dst, Operand(src), s, cond);
}
+ void movt(Register dst, const Operand& src, Condition cond = al);
+ void movw(Register dst, const Operand& src, Condition cond = al);
+
void bic(Register dst, Register src1, const Operand& src2,
SBit s = LeaveCC, Condition cond = al);
@@ -1057,7 +1066,8 @@
inline void emit(Instr x);
// Instruction generation
- void addrmod1(Instr instr, Register rn, Register rd, const Operand& x);
+ void addrmod1(Instr instr, Register rn, Register rd,
+ const Operand& x, bool use_movw_movt = true);
void addrmod2(Instr instr, Register rd, const MemOperand& x);
void addrmod3(Instr instr, Register rd, const MemOperand& x);
void addrmod4(Instr instr, Register rn, RegList rl);
@@ -1070,7 +1080,9 @@
void next(Label* L);
// Record reloc info for current pc_
- void RecordRelocInfo(RelocInfo::Mode rmode, intptr_t data = 0);
+ void RecordRelocInfo(RelocInfo::Mode rmode,
+ intptr_t data = 0,
+ bool with_const_pool = true);
Erik Corry 2010/05/03 10:06:28 Also here the bool argument makes code unreadble a
friend class RegExpMacroAssemblerARM;
friend class RelocInfo;
« no previous file with comments | « AUTHORS ('k') | src/arm/assembler-arm.cc » ('j') | src/arm/assembler-arm.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698