Index: src/mips/macro-assembler-mips.cc |
diff --git a/src/mips/macro-assembler-mips.cc b/src/mips/macro-assembler-mips.cc |
index 3022f43a16916ecab9290895fc1783619da9c7ef..d5b4d5955deec61ebf2ef5fa05281e59305b9fcd 100644 |
--- a/src/mips/macro-assembler-mips.cc |
+++ b/src/mips/macro-assembler-mips.cc |
@@ -509,6 +509,7 @@ void MacroAssembler::CheckAccessGlobalProxy(Register holder_reg, |
Register scratch, |
Label* miss) { |
Label same_contexts; |
+ Register temporary = t8; |
DCHECK(!holder_reg.is(scratch)); |
DCHECK(!holder_reg.is(at)); |
@@ -521,9 +522,10 @@ void MacroAssembler::CheckAccessGlobalProxy(Register holder_reg, |
mov(at, fp); |
bind(&load_context); |
lw(scratch, MemOperand(at, CommonFrameConstants::kContextOrFrameTypeOffset)); |
- JumpIfNotSmi(scratch, &has_context); |
+ // Passing temporary register, otherwise JumpIfNotSmi modifies register at. |
+ JumpIfNotSmi(scratch, &has_context, temporary); |
lw(at, MemOperand(at, CommonFrameConstants::kCallerFPOffset)); |
- b(&load_context); |
+ Branch(&load_context); |
bind(&has_context); |
// In debug mode, make sure the lexical context is set. |