| Index: runtime/vm/intermediate_language_dbc.cc
|
| diff --git a/runtime/vm/intermediate_language_dbc.cc b/runtime/vm/intermediate_language_dbc.cc
|
| index 4af998e6a78edb5d9df89bc7aea2ed1ca7584bb1..0e1afc637a52de73e7ebfecb5d0475cae0c60142 100644
|
| --- a/runtime/vm/intermediate_language_dbc.cc
|
| +++ b/runtime/vm/intermediate_language_dbc.cc
|
| @@ -108,7 +108,6 @@ DECLARE_FLAG(int, optimization_counter_threshold);
|
| M(UnboxInteger32) \
|
| M(CheckedSmiOp) \
|
| M(CheckArrayBound) \
|
| - M(CheckSmi) \
|
| M(CheckClassId) \
|
| M(CheckClass) \
|
| M(BinarySmiOp) \
|
| @@ -850,8 +849,12 @@ Representation LoadIndexedInstr::representation() const {
|
| Representation StoreIndexedInstr::RequiredInputRepresentation(
|
| intptr_t idx) const {
|
| // Array can be a Dart object or a pointer to external data.
|
| - if (idx == 0) return kNoRepresentation; // Flexible input representation.
|
| - if (idx == 1) return kTagged; // Index is a smi.
|
| + if (idx == 0) {
|
| + return kNoRepresentation; // Flexible input representation.
|
| + }
|
| + if (idx == 1) {
|
| + return kTagged; // Index is a smi.
|
| + }
|
| ASSERT(idx == 2);
|
| switch (class_id_) {
|
| case kArrayCid:
|
| @@ -903,6 +906,13 @@ void Environment::DropArguments(intptr_t argc) {
|
| }
|
|
|
|
|
| +EMIT_NATIVE_CODE(CheckSmi, 1) {
|
| + __ CheckSmi(locs()->in(0).reg());
|
| + compiler->EmitDeopt(deopt_id(),
|
| + ICData::kDeoptCheckSmi,
|
| + licm_hoisted_ ? ICData::kHoisted : 0);
|
| +}
|
| +
|
| } // namespace dart
|
|
|
| #endif // defined TARGET_ARCH_DBC
|
|
|