Index: src/mips64/macro-assembler-mips64.cc |
diff --git a/src/mips64/macro-assembler-mips64.cc b/src/mips64/macro-assembler-mips64.cc |
index 72f2e16b75fae2a2975efeea385eb64fc2b603a5..5fbace4b25fcc9aa92278b51c26d5cf57f57af01 100644 |
--- a/src/mips64/macro-assembler-mips64.cc |
+++ b/src/mips64/macro-assembler-mips64.cc |
@@ -512,6 +512,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)); |
@@ -524,9 +525,10 @@ void MacroAssembler::CheckAccessGlobalProxy(Register holder_reg, |
mov(at, fp); |
bind(&load_context); |
ld(scratch, MemOperand(at, CommonFrameConstants::kContextOrFrameTypeOffset)); |
- JumpIfNotSmi(scratch, &has_context); |
+ // Passing temporary register, otherwise JumpIfNotSmi modifies register at. |
+ JumpIfNotSmi(scratch, &has_context, temporary); |
ld(at, MemOperand(at, CommonFrameConstants::kCallerFPOffset)); |
- b(&load_context); |
+ Branch(&load_context); |
bind(&has_context); |
// In debug mode, make sure the lexical context is set. |