| 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) {
|
|
|