Index: src/x64/code-stubs-x64.cc |
diff --git a/src/x64/code-stubs-x64.cc b/src/x64/code-stubs-x64.cc |
index 171112fa7d37a37d01a2a22aa2e41ac1322985d1..8c69f8299f2c9007807c1c11739c289dff8689ec 100644 |
--- a/src/x64/code-stubs-x64.cc |
+++ b/src/x64/code-stubs-x64.cc |
@@ -4940,9 +4940,19 @@ void SubStringStub::Generate(MacroAssembler* masm) { |
STATIC_ASSERT((kStringEncodingMask & kOneByteStringTag) != 0); |
STATIC_ASSERT((kStringEncodingMask & kTwoByteStringTag) == 0); |
__ testb(rbx, Immediate(kStringEncodingMask)); |
- __ j(zero, &two_byte_slice, Label::kNear); |
+ if (masm->emit_allocations_tracking_code()) { |
+ // Make a long jump due to RecordObjectAllocation inside |
+ // MacroAssembler::Allocate |
+ __ j(zero, &two_byte_slice); |
+ } else { |
+ __ j(zero, &two_byte_slice, Label::kNear); |
+ } |
__ AllocateAsciiSlicedString(rax, rbx, r14, &runtime); |
- __ jmp(&set_slice_header, Label::kNear); |
+ if (masm->emit_allocations_tracking_code()) { |
+ __ jmp(&set_slice_header); |
+ } else { |
+ __ jmp(&set_slice_header, Label::kNear); |
+ } |
__ bind(&two_byte_slice); |
__ AllocateTwoByteSlicedString(rax, rbx, r14, &runtime); |
__ bind(&set_slice_header); |