Index: runtime/vm/intermediate_language_dbc.cc |
diff --git a/runtime/vm/intermediate_language_dbc.cc b/runtime/vm/intermediate_language_dbc.cc |
index cfbfaa8ca07efc16546b90d81baea243f638e62e..8c954b66fda2af8aabb5ac868ede98968f4e31d1 100644 |
--- a/runtime/vm/intermediate_language_dbc.cc |
+++ b/runtime/vm/intermediate_language_dbc.cc |
@@ -228,11 +228,8 @@ LocationSummary* PolymorphicInstanceCallInstr::MakeLocationSummary( |
void PolymorphicInstanceCallInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
-#if defined(PRODUCT) |
- compiler->Bailout("PolymorphicInstanceCallInstr::EmitNativeCode"); |
-#else // defined(PRODUCT) |
- compiler->Bailout(ToCString()); |
-#endif // defined(PRODUCT) |
+ Unsupported(compiler); |
+ UNREACHABLE(); |
} |
@@ -565,13 +562,9 @@ EMIT_NATIVE_CODE(CreateArray, |
EMIT_NATIVE_CODE(StoreIndexed, 3) { |
if (compiler->is_optimizing()) { |
if (class_id() != kArrayCid) { |
-#if defined(PRODUCT) |
- compiler->Bailout("StoreIndexed"); |
-#else // defined(PRODUCT) |
- compiler->Bailout(ToCString()); |
-#endif // defined(PRODUCT) |
+ Unsupported(compiler); |
+ UNREACHABLE(); |
} |
- |
__ StoreIndexed(locs()->in(kArrayPos).reg(), |
locs()->in(kIndexPos).reg(), |
locs()->in(kValuePos).reg()); |
@@ -1015,24 +1008,13 @@ EMIT_NATIVE_CODE(CheckEitherNonSmi, 2) { |
EMIT_NATIVE_CODE(CheckClassId, 1) { |
- if (!Utils::IsUint(16, cid_)) { |
-#if defined(PRODUCT) |
- compiler->Bailout("CheckClassInstr::EmitNativeCode"); |
-#else // defined(PRODUCT) |
- compiler->Bailout(ToCString()); |
-#endif // defined(PRODUCT) |
- } |
- __ CheckClassId(locs()->in(0).reg(), cid_); |
+ __ CheckClassId(locs()->in(0).reg(), |
+ compiler->ToEmbeddableCid(cid_, this)); |
compiler->EmitDeopt(deopt_id(), ICData::kDeoptCheckClass); |
} |
EMIT_NATIVE_CODE(CheckClass, 1) { |
-#if defined(PRODUCT) |
- const char* bailout_msg = "CheckClassInstr::EmitNativeCode"; |
-#else // defined(PRODUCT) |
- const char* bailout_msg = ToCString(); |
-#endif // defined(PRODUCT) |
const Register value = locs()->in(0).reg(); |
if (IsNullCheck()) { |
ASSERT(DeoptIfNull() || DeoptIfNotNull()); |
@@ -1049,12 +1031,9 @@ EMIT_NATIVE_CODE(CheckClass, 1) { |
if (IsDenseSwitch()) { |
ASSERT(cids_[0] < cids_[cids_.length() - 1]); |
const intptr_t low_cid = cids_[0]; |
- if (!Utils::IsUint(16, low_cid)) { |
- compiler->Bailout(bailout_msg); |
- } |
const intptr_t cid_mask = ComputeCidMask(); |
__ CheckDenseSwitch(value, may_be_smi); |
- __ Nop(low_cid); |
+ __ Nop(compiler->ToEmbeddableCid(low_cid, this)); |
__ Nop(__ AddConstant(Smi::Handle(Smi::New(cid_mask)))); |
} else { |
GrowableArray<CidTarget> sorted_ic_data; |
@@ -1062,25 +1041,13 @@ EMIT_NATIVE_CODE(CheckClass, 1) { |
&sorted_ic_data, |
/* drop_smi = */ true); |
const intptr_t sorted_length = sorted_ic_data.length(); |
- ASSERT(sorted_length >= 1); |
- if (sorted_length == 1) { |
- const intptr_t cid = sorted_ic_data[0].cid; |
- if (!Utils::IsUint(16, cid)) { |
- compiler->Bailout(bailout_msg); |
- } |
- __ CheckClassId(value, cid); |
- } else { |
- if (!Utils::IsUint(8, sorted_length)) { |
- compiler->Bailout(bailout_msg); |
- } |
- __ CheckCids(value, may_be_smi, sorted_length); |
- for (intptr_t i = 0; i < sorted_length; i++) { |
- const intptr_t cid = sorted_ic_data[i].cid; |
- if (!Utils::IsUint(16, cid)) { |
- compiler->Bailout(bailout_msg); |
- } |
- __ Nop(cid); |
- } |
+ if (!Utils::IsUint(8, sorted_length)) { |
+ Unsupported(compiler); |
+ UNREACHABLE(); |
+ } |
+ __ CheckCids(value, may_be_smi, sorted_length); |
+ for (intptr_t i = 0; i < sorted_length; i++) { |
+ __ Nop(compiler->ToEmbeddableCid(sorted_ic_data[i].cid, this)); |
} |
} |
} |