Index: src/mips/macro-assembler-mips.cc |
diff --git a/src/mips/macro-assembler-mips.cc b/src/mips/macro-assembler-mips.cc |
index 603f1be70e944d0bd68b53de397e50dad1ba0783..33ff9aba644d954e88037688183a8327add75287 100644 |
--- a/src/mips/macro-assembler-mips.cc |
+++ b/src/mips/macro-assembler-mips.cc |
@@ -1108,6 +1108,7 @@ void MacroAssembler::BranchF(Label* target, |
FPURegister cmp1, |
FPURegister cmp2, |
BranchDelaySlot bd) { |
+ BlockTrampolinePoolScope block_trampoline_pool(this); |
if (cc == al) { |
Branch(bd, target); |
return; |
@@ -1700,6 +1701,7 @@ void MacroAssembler::BranchShort(int16_t offset, Condition cond, Register rs, |
if (rt.is_reg()) { |
// NOTE: 'at' can be clobbered by Branch but it is legal to use it as rs or |
// rt. |
+ BlockTrampolinePoolScope block_trampoline_pool(this); |
r2 = rt.rm_; |
switch (cond) { |
case cc_always: |
@@ -1785,6 +1787,7 @@ void MacroAssembler::BranchShort(int16_t offset, Condition cond, Register rs, |
// Be careful to always use shifted_branch_offset only just before the |
// branch instruction, as the location will be remember for patching the |
// target. |
+ BlockTrampolinePoolScope block_trampoline_pool(this); |
switch (cond) { |
case cc_always: |
b(offset); |
@@ -1929,6 +1932,7 @@ void MacroAssembler::BranchShort(Label* L, Condition cond, Register rs, |
Register r2 = no_reg; |
Register scratch = at; |
if (rt.is_reg()) { |
+ BlockTrampolinePoolScope block_trampoline_pool(this); |
r2 = rt.rm_; |
// Be careful to always use shifted_branch_offset only just before the |
// branch instruction, as the location will be remember for patching the |
@@ -2035,6 +2039,7 @@ void MacroAssembler::BranchShort(Label* L, Condition cond, Register rs, |
// Be careful to always use shifted_branch_offset only just before the |
// branch instruction, as the location will be remember for patching the |
// target. |
+ BlockTrampolinePoolScope block_trampoline_pool(this); |
switch (cond) { |
case cc_always: |
offset = shifted_branch_offset(L, false); |
@@ -2271,67 +2276,70 @@ void MacroAssembler::BranchAndLinkShort(int16_t offset, Condition cond, |
li(r2, rt); |
} |
- switch (cond) { |
- case cc_always: |
- bal(offset); |
- break; |
- case eq: |
- bne(rs, r2, 2); |
- nop(); |
- bal(offset); |
- break; |
- case ne: |
- beq(rs, r2, 2); |
- nop(); |
- bal(offset); |
- break; |
+ { |
+ BlockTrampolinePoolScope block_trampoline_pool(this); |
+ switch (cond) { |
+ case cc_always: |
+ bal(offset); |
+ break; |
+ case eq: |
+ bne(rs, r2, 2); |
+ nop(); |
+ bal(offset); |
+ break; |
+ case ne: |
+ beq(rs, r2, 2); |
+ nop(); |
+ bal(offset); |
+ break; |
- // Signed comparison. |
- case greater: |
- slt(scratch, r2, rs); |
- addiu(scratch, scratch, -1); |
- bgezal(scratch, offset); |
- break; |
- case greater_equal: |
- slt(scratch, rs, r2); |
- addiu(scratch, scratch, -1); |
- bltzal(scratch, offset); |
- break; |
- case less: |
- slt(scratch, rs, r2); |
- addiu(scratch, scratch, -1); |
- bgezal(scratch, offset); |
- break; |
- case less_equal: |
- slt(scratch, r2, rs); |
- addiu(scratch, scratch, -1); |
- bltzal(scratch, offset); |
- break; |
+ // Signed comparison. |
+ case greater: |
+ slt(scratch, r2, rs); |
+ addiu(scratch, scratch, -1); |
+ bgezal(scratch, offset); |
+ break; |
+ case greater_equal: |
+ slt(scratch, rs, r2); |
+ addiu(scratch, scratch, -1); |
+ bltzal(scratch, offset); |
+ break; |
+ case less: |
+ slt(scratch, rs, r2); |
+ addiu(scratch, scratch, -1); |
+ bgezal(scratch, offset); |
+ break; |
+ case less_equal: |
+ slt(scratch, r2, rs); |
+ addiu(scratch, scratch, -1); |
+ bltzal(scratch, offset); |
+ break; |
- // Unsigned comparison. |
- case Ugreater: |
- sltu(scratch, r2, rs); |
- addiu(scratch, scratch, -1); |
- bgezal(scratch, offset); |
- break; |
- case Ugreater_equal: |
- sltu(scratch, rs, r2); |
- addiu(scratch, scratch, -1); |
- bltzal(scratch, offset); |
- break; |
- case Uless: |
- sltu(scratch, rs, r2); |
- addiu(scratch, scratch, -1); |
- bgezal(scratch, offset); |
- break; |
- case Uless_equal: |
- sltu(scratch, r2, rs); |
- addiu(scratch, scratch, -1); |
- bltzal(scratch, offset); |
- break; |
+ // Unsigned comparison. |
+ case Ugreater: |
+ sltu(scratch, r2, rs); |
+ addiu(scratch, scratch, -1); |
+ bgezal(scratch, offset); |
+ break; |
+ case Ugreater_equal: |
+ sltu(scratch, rs, r2); |
+ addiu(scratch, scratch, -1); |
+ bltzal(scratch, offset); |
+ break; |
+ case Uless: |
+ sltu(scratch, rs, r2); |
+ addiu(scratch, scratch, -1); |
+ bgezal(scratch, offset); |
+ break; |
+ case Uless_equal: |
+ sltu(scratch, r2, rs); |
+ addiu(scratch, scratch, -1); |
+ bltzal(scratch, offset); |
+ break; |
- default: |
- UNREACHABLE(); |
+ default: |
+ UNREACHABLE(); |
+ } |
} |
// Emit a nop in the branch delay slot if required. |
if (bdslot == PROTECT) |
@@ -2363,80 +2371,82 @@ void MacroAssembler::BranchAndLinkShort(Label* L, Condition cond, Register rs, |
li(r2, rt); |
} |
- switch (cond) { |
- case cc_always: |
- offset = shifted_branch_offset(L, false); |
- bal(offset); |
- break; |
- case eq: |
- bne(rs, r2, 2); |
- nop(); |
- offset = shifted_branch_offset(L, false); |
- bal(offset); |
- break; |
- case ne: |
- beq(rs, r2, 2); |
- nop(); |
- offset = shifted_branch_offset(L, false); |
- bal(offset); |
- break; |
+ { |
+ BlockTrampolinePoolScope block_trampoline_pool(this); |
+ switch (cond) { |
+ case cc_always: |
+ offset = shifted_branch_offset(L, false); |
+ bal(offset); |
+ break; |
+ case eq: |
+ bne(rs, r2, 2); |
+ nop(); |
+ offset = shifted_branch_offset(L, false); |
+ bal(offset); |
+ break; |
+ case ne: |
+ beq(rs, r2, 2); |
+ nop(); |
+ offset = shifted_branch_offset(L, false); |
+ bal(offset); |
+ break; |
- // Signed comparison. |
- case greater: |
- slt(scratch, r2, rs); |
- addiu(scratch, scratch, -1); |
- offset = shifted_branch_offset(L, false); |
- bgezal(scratch, offset); |
- break; |
- case greater_equal: |
- slt(scratch, rs, r2); |
- addiu(scratch, scratch, -1); |
- offset = shifted_branch_offset(L, false); |
- bltzal(scratch, offset); |
- break; |
- case less: |
- slt(scratch, rs, r2); |
- addiu(scratch, scratch, -1); |
- offset = shifted_branch_offset(L, false); |
- bgezal(scratch, offset); |
- break; |
- case less_equal: |
- slt(scratch, r2, rs); |
- addiu(scratch, scratch, -1); |
- offset = shifted_branch_offset(L, false); |
- bltzal(scratch, offset); |
- break; |
+ // Signed comparison. |
+ case greater: |
+ slt(scratch, r2, rs); |
+ addiu(scratch, scratch, -1); |
+ offset = shifted_branch_offset(L, false); |
+ bgezal(scratch, offset); |
+ break; |
+ case greater_equal: |
+ slt(scratch, rs, r2); |
+ addiu(scratch, scratch, -1); |
+ offset = shifted_branch_offset(L, false); |
+ bltzal(scratch, offset); |
+ break; |
+ case less: |
+ slt(scratch, rs, r2); |
+ addiu(scratch, scratch, -1); |
+ offset = shifted_branch_offset(L, false); |
+ bgezal(scratch, offset); |
+ break; |
+ case less_equal: |
+ slt(scratch, r2, rs); |
+ addiu(scratch, scratch, -1); |
+ offset = shifted_branch_offset(L, false); |
+ bltzal(scratch, offset); |
+ break; |
- // Unsigned comparison. |
- case Ugreater: |
- sltu(scratch, r2, rs); |
- addiu(scratch, scratch, -1); |
- offset = shifted_branch_offset(L, false); |
- bgezal(scratch, offset); |
- break; |
- case Ugreater_equal: |
- sltu(scratch, rs, r2); |
- addiu(scratch, scratch, -1); |
- offset = shifted_branch_offset(L, false); |
- bltzal(scratch, offset); |
- break; |
- case Uless: |
- sltu(scratch, rs, r2); |
- addiu(scratch, scratch, -1); |
- offset = shifted_branch_offset(L, false); |
- bgezal(scratch, offset); |
- break; |
- case Uless_equal: |
- sltu(scratch, r2, rs); |
- addiu(scratch, scratch, -1); |
- offset = shifted_branch_offset(L, false); |
- bltzal(scratch, offset); |
- break; |
+ // Unsigned comparison. |
+ case Ugreater: |
+ sltu(scratch, r2, rs); |
+ addiu(scratch, scratch, -1); |
+ offset = shifted_branch_offset(L, false); |
+ bgezal(scratch, offset); |
+ break; |
+ case Ugreater_equal: |
+ sltu(scratch, rs, r2); |
+ addiu(scratch, scratch, -1); |
+ offset = shifted_branch_offset(L, false); |
+ bltzal(scratch, offset); |
+ break; |
+ case Uless: |
+ sltu(scratch, rs, r2); |
+ addiu(scratch, scratch, -1); |
+ offset = shifted_branch_offset(L, false); |
+ bgezal(scratch, offset); |
+ break; |
+ case Uless_equal: |
+ sltu(scratch, r2, rs); |
+ addiu(scratch, scratch, -1); |
+ offset = shifted_branch_offset(L, false); |
+ bltzal(scratch, offset); |
+ break; |
- default: |
- UNREACHABLE(); |
+ default: |
+ UNREACHABLE(); |
+ } |
} |
- |
// Check that offset could actually hold on an int16_t. |
ASSERT(is_int16(offset)); |