| Index: src/mips/macro-assembler-mips.cc
|
| ===================================================================
|
| --- src/mips/macro-assembler-mips.cc (revision 11074)
|
| +++ src/mips/macro-assembler-mips.cc (working copy)
|
| @@ -768,13 +768,12 @@
|
| }
|
| }
|
|
|
| -
|
| //------------Pseudo-instructions-------------
|
|
|
| -void MacroAssembler::li(Register rd, Operand j, bool gen2instr) {
|
| +void MacroAssembler::li(Register rd, Operand j, LiFlags mode) {
|
| ASSERT(!j.is_reg());
|
| BlockTrampolinePoolScope block_trampoline_pool(this);
|
| - if (!MustUseReg(j.rmode_) && !gen2instr) {
|
| + if (!MustUseReg(j.rmode_) && mode == OPTIMIZE_SIZE) {
|
| // Normal load of an immediate value which does not need Relocation Info.
|
| if (is_int16(j.imm32_)) {
|
| addiu(rd, zero_reg, j.imm32_);
|
| @@ -786,7 +785,7 @@
|
| lui(rd, (j.imm32_ >> kLuiShift) & kImm16Mask);
|
| ori(rd, rd, (j.imm32_ & kImm16Mask));
|
| }
|
| - } else if (MustUseReg(j.rmode_) || gen2instr) {
|
| + } else {
|
| if (MustUseReg(j.rmode_)) {
|
| RecordRelocInfo(j.rmode_, j.imm32_);
|
| }
|
| @@ -1647,6 +1646,16 @@
|
| }
|
|
|
|
|
| +void MacroAssembler::Branch(Label* L,
|
| + Condition cond,
|
| + Register rs,
|
| + Heap::RootListIndex index,
|
| + BranchDelaySlot bdslot) {
|
| + LoadRoot(at, index);
|
| + Branch(L, cond, rs, Operand(at), bdslot);
|
| +}
|
| +
|
| +
|
| void MacroAssembler::BranchShort(int16_t offset, BranchDelaySlot bdslot) {
|
| b(offset);
|
|
|
| @@ -2534,7 +2543,7 @@
|
| // Must record previous source positions before the
|
| // li() generates a new code target.
|
| positions_recorder()->WriteRecordedPositions();
|
| - li(t9, Operand(target_int, rmode), true);
|
| + li(t9, Operand(target_int, rmode), CONSTANT_SIZE);
|
| Call(t9, cond, rs, rt, bd);
|
| ASSERT_EQ(CallSize(target, rmode, cond, rs, rt, bd),
|
| SizeOfCodeGeneratedSince(&start));
|
| @@ -2743,7 +2752,7 @@
|
| unsigned state =
|
| StackHandler::IndexField::encode(handler_index) |
|
| StackHandler::KindField::encode(kind);
|
| - li(t1, Operand(CodeObject()));
|
| + li(t1, Operand(CodeObject()), CONSTANT_SIZE);
|
| li(t2, Operand(state));
|
|
|
| // Push the frame pointer, context, state, and code object.
|
| @@ -3372,7 +3381,7 @@
|
| // Ensure that the object is a heap number
|
| CheckMap(value_reg,
|
| scratch1,
|
| - isolate()->factory()->heap_number_map(),
|
| + Heap::kHeapNumberMapRootIndex,
|
| fail,
|
| DONT_DO_SMI_CHECK);
|
|
|
| @@ -4475,7 +4484,7 @@
|
| void MacroAssembler::EnterFrame(StackFrame::Type type) {
|
| addiu(sp, sp, -5 * kPointerSize);
|
| li(t8, Operand(Smi::FromInt(type)));
|
| - li(t9, Operand(CodeObject()));
|
| + li(t9, Operand(CodeObject()), CONSTANT_SIZE);
|
| sw(ra, MemOperand(sp, 4 * kPointerSize));
|
| sw(fp, MemOperand(sp, 3 * kPointerSize));
|
| sw(cp, MemOperand(sp, 2 * kPointerSize));
|
| @@ -4519,7 +4528,8 @@
|
| sw(zero_reg, MemOperand(fp, ExitFrameConstants::kSPOffset));
|
| }
|
|
|
| - li(t8, Operand(CodeObject())); // Accessed from ExitFrame::code_slot.
|
| + // Accessed from ExitFrame::code_slot.
|
| + li(t8, Operand(CodeObject()), CONSTANT_SIZE);
|
| sw(t8, MemOperand(fp, ExitFrameConstants::kCodeOffset));
|
|
|
| // Save the frame pointer and the context in top.
|
| @@ -5238,7 +5248,7 @@
|
| FieldMemOperand(map, Map::kInstanceDescriptorsOrBitField3Offset));
|
| Label not_smi;
|
| JumpIfNotSmi(descriptors, ¬_smi);
|
| - li(descriptors, Operand(FACTORY->empty_descriptor_array()));
|
| + LoadRoot(descriptors, Heap::kEmptyDescriptorArrayRootIndex);
|
| bind(¬_smi);
|
| }
|
|
|
|
|