Index: runtime/vm/simulator_dbc.cc |
diff --git a/runtime/vm/simulator_dbc.cc b/runtime/vm/simulator_dbc.cc |
index a82d19a840c89a0e04b296fb05ba62c5d6c2c9e5..356abaa47789834acedd445b49114ce33a3b6ef1 100644 |
--- a/runtime/vm/simulator_dbc.cc |
+++ b/runtime/vm/simulator_dbc.cc |
@@ -2672,21 +2672,25 @@ RawObject* Simulator::Call(const Code& code, |
} |
{ |
- BYTECODE(AssertAssignable, A_D); // Stack: instance, type args, type, name |
+ BYTECODE(BadTypeError, 0); // Stack: instance, type args, type, name |
RawObject** args = SP - 3; |
if (args[0] != null_value) { |
- const AbstractType& dst_type = |
- AbstractType::Handle(static_cast<RawAbstractType*>(args[2])); |
- if (dst_type.IsMalformedOrMalbounded()) { |
- SP[1] = args[0]; // instance. |
- SP[2] = args[3]; // name. |
- SP[3] = args[2]; // type. |
- Exit(thread, FP, SP + 4, pc); |
- NativeArguments native_args(thread, 3, SP + 1, SP - 3); |
- INVOKE_RUNTIME(DRT_BadTypeError, native_args); |
- UNREACHABLE(); |
- } |
+ SP[1] = args[0]; // instance. |
+ SP[2] = args[3]; // name. |
+ SP[3] = args[2]; // type. |
+ Exit(thread, FP, SP + 4, pc); |
+ NativeArguments native_args(thread, 3, SP + 1, SP - 3); |
+ INVOKE_RUNTIME(DRT_BadTypeError, native_args); |
+ UNREACHABLE(); |
+ } |
+ SP -= 3; |
+ DISPATCH(); |
+ } |
+ { |
+ BYTECODE(AssertAssignable, A_D); // Stack: instance, type args, type, name |
+ RawObject** args = SP - 3; |
+ if (args[0] != null_value) { |
RawSubtypeTestCache* cache = |
static_cast<RawSubtypeTestCache*>(LOAD_CONSTANT(rD)); |
if (cache != null_value) { |