Index: dart/runtime/vm/intermediate_language_arm.cc |
=================================================================== |
--- dart/runtime/vm/intermediate_language_arm.cc (revision 31530) |
+++ dart/runtime/vm/intermediate_language_arm.cc (working copy) |
@@ -99,13 +99,6 @@ |
#endif |
__ LeaveDartFrame(); |
__ Ret(); |
- |
- // No need to generate NOP instructions so that the debugger can patch the |
- // return pattern (3 instructions) with a call to the debug stub (also 3 |
- // instructions). |
- compiler->AddCurrentDescriptor(PcDescriptors::kReturn, |
- Isolate::kNoDeoptId, |
- token_pos()); |
} |
@@ -745,6 +738,26 @@ |
} |
+LocationSummary* StringToCharCodeInstr::MakeLocationSummary(bool opt) const { |
+ const intptr_t kNumInputs = 1; |
+ return LocationSummary::Make(kNumInputs, |
+ Location::RequiresRegister(), |
+ LocationSummary::kNoCall); |
+} |
+ |
+ |
+void StringToCharCodeInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
+ ASSERT(cid_ == kOneByteStringCid); |
+ Register str = locs()->in(0).reg(); |
+ Register result = locs()->out().reg(); |
+ __ ldr(result, FieldAddress(str, String::length_offset())); |
+ __ cmp(result, ShifterOperand(Smi::RawValue(1))); |
+ __ LoadImmediate(result, Smi::RawValue(-1), NE); |
+ __ ldrb(result, FieldAddress(str, OneByteString::data_offset()), EQ); |
+ __ SmiTag(result); |
+} |
+ |
+ |
LocationSummary* StringInterpolateInstr::MakeLocationSummary(bool opt) const { |
const intptr_t kNumInputs = 1; |
const intptr_t kNumTemps = 0; |