| Index: dart/runtime/vm/intermediate_language_mips.cc
|
| ===================================================================
|
| --- dart/runtime/vm/intermediate_language_mips.cc (revision 31530)
|
| +++ dart/runtime/vm/intermediate_language_mips.cc (working copy)
|
| @@ -101,13 +101,7 @@
|
| __ Bind(&stack_ok);
|
| }
|
| #endif
|
| - // This sequence is patched by a debugger breakpoint. There is no need for
|
| - // extra NOP instructions here because the sequence patched in for a
|
| - // breakpoint is shorter than the sequence here.
|
| __ LeaveDartFrameAndReturn();
|
| - compiler->AddCurrentDescriptor(PcDescriptors::kReturn,
|
| - Isolate::kNoDeoptId,
|
| - token_pos());
|
| }
|
|
|
|
|
| @@ -810,6 +804,32 @@
|
| }
|
|
|
|
|
| +LocationSummary* StringToCharCodeInstr::MakeLocationSummary(bool opt) const {
|
| + const intptr_t kNumInputs = 1;
|
| + return LocationSummary::Make(kNumInputs,
|
| + Location::RequiresRegister(),
|
| + LocationSummary::kNoCall);
|
| +}
|
| +
|
| +
|
| +void StringToCharCodeInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| + __ TraceSimMsg("StringToCharCodeInstr");
|
| +
|
| + ASSERT(cid_ == kOneByteStringCid);
|
| + Register str = locs()->in(0).reg();
|
| + Register result = locs()->out().reg();
|
| + Label done, is_one;
|
| + __ lw(result, FieldAddress(str, String::length_offset()));
|
| + __ BranchEqual(result, Smi::RawValue(1), &is_one);
|
| + __ LoadImmediate(result, Smi::RawValue(-1));
|
| + __ b(&done);
|
| + __ Bind(&is_one);
|
| + __ lbu(result, FieldAddress(str, OneByteString::data_offset()));
|
| + __ SmiTag(result);
|
| + __ Bind(&done);
|
| +}
|
| +
|
| +
|
| LocationSummary* StringInterpolateInstr::MakeLocationSummary(bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| const intptr_t kNumTemps = 0;
|
|
|