Index: src/mips/macro-assembler-mips.h |
=================================================================== |
--- src/mips/macro-assembler-mips.h (revision 11074) |
+++ src/mips/macro-assembler-mips.h (working copy) |
@@ -81,7 +81,17 @@ |
PROTECT |
}; |
+// Flags used for the li macro-assembler function. |
+enum LiFlags { |
+ // If the constant value can be represented in just 16 bits, then |
+ // optimize the li to use a single instruction, rather than lui/ori pair. |
+ OPTIMIZE_SIZE = 0, |
+ // Always use 2 instructions (lui/ori pair), even if the constant could |
+ // be loaded with just one, so that this value is patchable later. |
+ CONSTANT_SIZE = 1 |
+}; |
+ |
enum RememberedSetAction { EMIT_REMEMBERED_SET, OMIT_REMEMBERED_SET }; |
enum SmiCheck { INLINE_SMI_CHECK, OMIT_SMI_CHECK }; |
enum RAStatus { kRAHasNotBeenSaved, kRAHasBeenSaved }; |
@@ -184,6 +194,12 @@ |
Ret(cond, rs, rt, bd); |
} |
+ void Branch(Label* L, |
+ Condition cond, |
+ Register rs, |
+ Heap::RootListIndex index, |
+ BranchDelaySlot bdslot = PROTECT); |
+ |
#undef COND_ARGS |
// Emit code to discard a non-negative number of pointer-sized elements |
@@ -244,7 +260,6 @@ |
Branch(L); |
} |
- |
// Load an object from the root table. |
void LoadRoot(Register destination, |
Heap::RootListIndex index); |
@@ -575,12 +590,13 @@ |
void mov(Register rd, Register rt) { or_(rd, rt, zero_reg); } |
// Load int32 in the rd register. |
- void li(Register rd, Operand j, bool gen2instr = false); |
- inline void li(Register rd, int32_t j, bool gen2instr = false) { |
- li(rd, Operand(j), gen2instr); |
+ void li(Register rd, Operand j, LiFlags mode = OPTIMIZE_SIZE); |
+ inline void li(Register rd, int32_t j, LiFlags mode = OPTIMIZE_SIZE) { |
+ li(rd, Operand(j), mode); |
} |
- inline void li(Register dst, Handle<Object> value, bool gen2instr = false) { |
- li(dst, Operand(value), gen2instr); |
+ inline void li(Register dst, Handle<Object> value, |
+ LiFlags mode = OPTIMIZE_SIZE) { |
+ li(dst, Operand(value), mode); |
} |
// Push multiple registers on the stack. |