Index: src/arm64/macro-assembler-arm64.cc |
diff --git a/src/arm64/macro-assembler-arm64.cc b/src/arm64/macro-assembler-arm64.cc |
index c04cc83bfdaaa8100aa6282efbc9607229807283..3c42194e0102fd4ee38a3b1cf46126557243f3d9 100644 |
--- a/src/arm64/macro-assembler-arm64.cc |
+++ b/src/arm64/macro-assembler-arm64.cc |
@@ -1877,24 +1877,31 @@ void MacroAssembler::Jump(Register target) { |
} |
-void MacroAssembler::Jump(intptr_t target, RelocInfo::Mode rmode) { |
+void MacroAssembler::Jump(intptr_t target, RelocInfo::Mode rmode, |
+ Condition cond) { |
+ if (cond == nv) return; |
UseScratchRegisterScope temps(this); |
Register temp = temps.AcquireX(); |
+ Label done; |
+ if (cond != al) B(NegateCondition(cond), &done); |
Mov(temp, Operand(target, rmode)); |
Br(temp); |
+ Bind(&done); |
} |
-void MacroAssembler::Jump(Address target, RelocInfo::Mode rmode) { |
+void MacroAssembler::Jump(Address target, RelocInfo::Mode rmode, |
+ Condition cond) { |
DCHECK(!RelocInfo::IsCodeTarget(rmode)); |
- Jump(reinterpret_cast<intptr_t>(target), rmode); |
+ Jump(reinterpret_cast<intptr_t>(target), rmode, cond); |
} |
-void MacroAssembler::Jump(Handle<Code> code, RelocInfo::Mode rmode) { |
+void MacroAssembler::Jump(Handle<Code> code, RelocInfo::Mode rmode, |
+ Condition cond) { |
DCHECK(RelocInfo::IsCodeTarget(rmode)); |
AllowDeferredHandleDereference embedding_raw_address; |
- Jump(reinterpret_cast<intptr_t>(code.location()), rmode); |
+ Jump(reinterpret_cast<intptr_t>(code.location()), rmode, cond); |
} |