| Index: runtime/vm/intrinsifier_x64.cc
|
| ===================================================================
|
| --- runtime/vm/intrinsifier_x64.cc (revision 29681)
|
| +++ runtime/vm/intrinsifier_x64.cc (working copy)
|
| @@ -1579,7 +1579,7 @@
|
| }
|
|
|
|
|
| -// Arg0: Onebyte String
|
| +// Arg0: OneByteString (receiver).
|
| // Arg1: Start index as Smi.
|
| // Arg2: End index as Smi.
|
| // The indexes must be valid.
|
| @@ -1588,7 +1588,12 @@
|
| const intptr_t kStartIndexOffset = 2 * kWordSize;
|
| const intptr_t kEndIndexOffset = 1 * kWordSize;
|
| Label fall_through, ok;
|
| + __ movq(RSI, Address(RSP, + kEndIndexOffset));
|
| __ movq(RDI, Address(RSP, + kEndIndexOffset));
|
| + __ orq(RSI, RDI);
|
| + __ testq(RSI, Immediate(kSmiTagMask));
|
| + __ j(NOT_ZERO, &fall_through); // 'start', 'end' not Smi.
|
| +
|
| __ subq(RDI, Address(RSP, + kStartIndexOffset));
|
| TryAllocateOnebyteString(assembler, &ok, &fall_through, RDI);
|
| __ Bind(&ok);
|
|
|