| 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);
|
|
|