Chromium Code Reviews| Index: src/mips/macro-assembler-mips.h |
| diff --git a/src/mips/macro-assembler-mips.h b/src/mips/macro-assembler-mips.h |
| index 6ae8657e1e6399114a0ebddbb62f2421d7ed8dcd..0be5df2cd1eb51a8c42dfa6b564f0c4564e2ceef 100644 |
| --- a/src/mips/macro-assembler-mips.h |
| +++ b/src/mips/macro-assembler-mips.h |
| @@ -81,6 +81,16 @@ enum BranchDelaySlot { |
| 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 }; |
| @@ -184,6 +194,9 @@ class MacroAssembler: public Assembler { |
| 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 |
| @@ -237,7 +250,7 @@ class MacroAssembler: public Assembler { |
| Branch(L); |
| } |
| - |
| + int FindRootIndex(Object* heap_object); |
|
Erik Corry
2012/03/17 02:49:18
I got rid of this.
|
| // Load an object from the root table. |
| void LoadRoot(Register destination, |
| Heap::RootListIndex index); |
| @@ -568,12 +581,13 @@ class MacroAssembler: public Assembler { |
| 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. |