| Index: src/mips64/macro-assembler-mips64.h
|
| diff --git a/src/mips64/macro-assembler-mips64.h b/src/mips64/macro-assembler-mips64.h
|
| index 4d54ec5d733e3d581f0defd0e6bfb8b00c079737..3a368ec166a991bd38a016e32c689d94a43310a8 100644
|
| --- a/src/mips64/macro-assembler-mips64.h
|
| +++ b/src/mips64/macro-assembler-mips64.h
|
| @@ -716,6 +716,27 @@ class MacroAssembler: public Assembler {
|
| void LoadWordPair(Register rd, const MemOperand& rs, Register scratch = at);
|
| void StoreWordPair(Register rd, const MemOperand& rs, Register scratch = at);
|
|
|
| + void Lb(Register rd, const MemOperand& rs);
|
| + void Lbu(Register rd, const MemOperand& rs);
|
| + void Sb(Register rd, const MemOperand& rs);
|
| +
|
| + void Lh(Register rd, const MemOperand& rs);
|
| + void Lhu(Register rd, const MemOperand& rs);
|
| + void Sh(Register rd, const MemOperand& rs);
|
| +
|
| + void Lw(Register rd, const MemOperand& rs);
|
| + void Lwu(Register rd, const MemOperand& rs);
|
| + void Sw(Register rd, const MemOperand& rs);
|
| +
|
| + void Ld(Register rd, const MemOperand& rs);
|
| + void Sd(Register rd, const MemOperand& rs);
|
| +
|
| + void Lwc1(FPURegister fd, const MemOperand& src);
|
| + void Swc1(FPURegister fs, const MemOperand& dst);
|
| +
|
| + void Ldc1(FPURegister fd, const MemOperand& src);
|
| + void Sdc1(FPURegister fs, const MemOperand& dst);
|
| +
|
| // Load int32 in the rd register.
|
| void li(Register rd, Operand j, LiFlags mode = OPTIMIZE_SIZE);
|
| inline bool LiLower32BitHelper(Register rd, Operand j);
|
| @@ -735,7 +756,7 @@ class MacroAssembler: public Assembler {
|
|
|
| void push(Register src) {
|
| Daddu(sp, sp, Operand(-kPointerSize));
|
| - sd(src, MemOperand(sp, 0));
|
| + Sd(src, MemOperand(sp, 0));
|
| }
|
| void Push(Register src) { push(src); }
|
|
|
| @@ -746,43 +767,43 @@ class MacroAssembler: public Assembler {
|
| // Push two registers. Pushes leftmost register first (to highest address).
|
| void Push(Register src1, Register src2) {
|
| Dsubu(sp, sp, Operand(2 * kPointerSize));
|
| - sd(src1, MemOperand(sp, 1 * kPointerSize));
|
| - sd(src2, MemOperand(sp, 0 * kPointerSize));
|
| + Sd(src1, MemOperand(sp, 1 * kPointerSize));
|
| + Sd(src2, MemOperand(sp, 0 * kPointerSize));
|
| }
|
|
|
| // Push three registers. Pushes leftmost register first (to highest address).
|
| void Push(Register src1, Register src2, Register src3) {
|
| Dsubu(sp, sp, Operand(3 * kPointerSize));
|
| - sd(src1, MemOperand(sp, 2 * kPointerSize));
|
| - sd(src2, MemOperand(sp, 1 * kPointerSize));
|
| - sd(src3, MemOperand(sp, 0 * kPointerSize));
|
| + Sd(src1, MemOperand(sp, 2 * kPointerSize));
|
| + Sd(src2, MemOperand(sp, 1 * kPointerSize));
|
| + Sd(src3, MemOperand(sp, 0 * kPointerSize));
|
| }
|
|
|
| // Push four registers. Pushes leftmost register first (to highest address).
|
| void Push(Register src1, Register src2, Register src3, Register src4) {
|
| Dsubu(sp, sp, Operand(4 * kPointerSize));
|
| - sd(src1, MemOperand(sp, 3 * kPointerSize));
|
| - sd(src2, MemOperand(sp, 2 * kPointerSize));
|
| - sd(src3, MemOperand(sp, 1 * kPointerSize));
|
| - sd(src4, MemOperand(sp, 0 * kPointerSize));
|
| + Sd(src1, MemOperand(sp, 3 * kPointerSize));
|
| + Sd(src2, MemOperand(sp, 2 * kPointerSize));
|
| + Sd(src3, MemOperand(sp, 1 * kPointerSize));
|
| + Sd(src4, MemOperand(sp, 0 * kPointerSize));
|
| }
|
|
|
| // Push five registers. Pushes leftmost register first (to highest address).
|
| void Push(Register src1, Register src2, Register src3, Register src4,
|
| Register src5) {
|
| Dsubu(sp, sp, Operand(5 * kPointerSize));
|
| - sd(src1, MemOperand(sp, 4 * kPointerSize));
|
| - sd(src2, MemOperand(sp, 3 * kPointerSize));
|
| - sd(src3, MemOperand(sp, 2 * kPointerSize));
|
| - sd(src4, MemOperand(sp, 1 * kPointerSize));
|
| - sd(src5, MemOperand(sp, 0 * kPointerSize));
|
| + Sd(src1, MemOperand(sp, 4 * kPointerSize));
|
| + Sd(src2, MemOperand(sp, 3 * kPointerSize));
|
| + Sd(src3, MemOperand(sp, 2 * kPointerSize));
|
| + Sd(src4, MemOperand(sp, 1 * kPointerSize));
|
| + Sd(src5, MemOperand(sp, 0 * kPointerSize));
|
| }
|
|
|
| void Push(Register src, Condition cond, Register tst1, Register tst2) {
|
| // Since we don't have conditional execution we use a Branch.
|
| Branch(3, cond, tst1, Operand(tst2));
|
| Dsubu(sp, sp, Operand(kPointerSize));
|
| - sd(src, MemOperand(sp, 0));
|
| + Sd(src, MemOperand(sp, 0));
|
| }
|
|
|
| void PushRegisterAsTwoSmis(Register src, Register scratch = at);
|
| @@ -797,7 +818,7 @@ class MacroAssembler: public Assembler {
|
| void MultiPopReversedFPU(RegList regs);
|
|
|
| void pop(Register dst) {
|
| - ld(dst, MemOperand(sp, 0));
|
| + Ld(dst, MemOperand(sp, 0));
|
| Daddu(sp, sp, Operand(kPointerSize));
|
| }
|
| void Pop(Register dst) { pop(dst); }
|
| @@ -805,16 +826,16 @@ class MacroAssembler: public Assembler {
|
| // Pop two registers. Pops rightmost register first (from lower address).
|
| void Pop(Register src1, Register src2) {
|
| DCHECK(!src1.is(src2));
|
| - ld(src2, MemOperand(sp, 0 * kPointerSize));
|
| - ld(src1, MemOperand(sp, 1 * kPointerSize));
|
| + Ld(src2, MemOperand(sp, 0 * kPointerSize));
|
| + Ld(src1, MemOperand(sp, 1 * kPointerSize));
|
| Daddu(sp, sp, 2 * kPointerSize);
|
| }
|
|
|
| // Pop three registers. Pops rightmost register first (from lower address).
|
| void Pop(Register src1, Register src2, Register src3) {
|
| - ld(src3, MemOperand(sp, 0 * kPointerSize));
|
| - ld(src2, MemOperand(sp, 1 * kPointerSize));
|
| - ld(src1, MemOperand(sp, 2 * kPointerSize));
|
| + Ld(src3, MemOperand(sp, 0 * kPointerSize));
|
| + Ld(src2, MemOperand(sp, 1 * kPointerSize));
|
| + Ld(src1, MemOperand(sp, 2 * kPointerSize));
|
| Daddu(sp, sp, 3 * kPointerSize);
|
| }
|
|
|
| @@ -1163,7 +1184,7 @@ class MacroAssembler: public Assembler {
|
| Register type_reg);
|
|
|
| void GetInstanceType(Register object_map, Register object_instance_type) {
|
| - lbu(object_instance_type,
|
| + Lbu(object_instance_type,
|
| FieldMemOperand(object_map, Map::kInstanceTypeOffset));
|
| }
|
|
|
| @@ -1220,8 +1241,8 @@ class MacroAssembler: public Assembler {
|
| Condition IsObjectStringType(Register obj,
|
| Register type,
|
| Register result) {
|
| - ld(type, FieldMemOperand(obj, HeapObject::kMapOffset));
|
| - lbu(type, FieldMemOperand(type, Map::kInstanceTypeOffset));
|
| + Ld(type, FieldMemOperand(obj, HeapObject::kMapOffset));
|
| + Lbu(type, FieldMemOperand(type, Map::kInstanceTypeOffset));
|
| And(type, type, Operand(kIsNotStringMask));
|
| DCHECK_EQ(0u, kStringTag);
|
| return eq;
|
| @@ -1465,7 +1486,7 @@ const Operand& rt = Operand(zero_reg), BranchDelaySlot bd = PROTECT
|
|
|
| // Arguments 1-4 are placed in registers a0 thru a3 respectively.
|
| // Arguments 5..n are stored to stack using following:
|
| - // sw(a4, CFunctionArgumentOperand(5));
|
| + // Sw(a4, CFunctionArgumentOperand(5));
|
|
|
| // Calls a C function and cleans up the space for arguments allocated
|
| // by PrepareCallCFunction. The called function is not allowed to trigger a
|
| @@ -1861,6 +1882,10 @@ const Operand& rt = Operand(zero_reg), BranchDelaySlot bd = PROTECT
|
| MemOperand SafepointRegisterSlot(Register reg);
|
| MemOperand SafepointRegistersAndDoublesSlot(Register reg);
|
|
|
| + // Helpers.
|
| + void LoadRegPlusOffsetToAt(const MemOperand& src);
|
| + int32_t LoadRegPlusUpperOffsetPartToAt(const MemOperand& src);
|
| +
|
| bool generating_stub_;
|
| bool has_frame_;
|
| bool has_double_zero_reg_set_;
|
| @@ -1924,7 +1949,7 @@ void MacroAssembler::GenerateSwitchTable(Register index, size_t case_count,
|
| }
|
| addiupc(at, 5);
|
| Dlsa(at, at, index, kPointerSizeLog2);
|
| - ld(at, MemOperand(at));
|
| + Ld(at, MemOperand(at));
|
| } else {
|
| Label here;
|
| BlockTrampolinePoolFor(static_cast<int>(case_count) * 2 +
|
| @@ -1936,7 +1961,7 @@ void MacroAssembler::GenerateSwitchTable(Register index, size_t case_count,
|
| bind(&here);
|
| daddu(at, at, ra);
|
| pop(ra);
|
| - ld(at, MemOperand(at, 6 * v8::internal::Assembler::kInstrSize));
|
| + Ld(at, MemOperand(at, 6 * v8::internal::Assembler::kInstrSize));
|
| }
|
| jr(at);
|
| nop(); // Branch delay slot nop.
|
|
|