Index: runtime/vm/simulator_dbc.cc |
diff --git a/runtime/vm/simulator_dbc.cc b/runtime/vm/simulator_dbc.cc |
index e0457de4433834ecb844eaaef15c95b4fc7f310a..d16a5a375869ea3c06faeb2d7826d0b627feec63 100644 |
--- a/runtime/vm/simulator_dbc.cc |
+++ b/runtime/vm/simulator_dbc.cc |
@@ -2924,7 +2924,7 @@ RawObject* Simulator::Call(const Code& code, |
} |
{ |
- BYTECODE(InstanceOf, 0); // Stack: instance, type args, type, cache |
+ BYTECODE(InstanceOf, A); // Stack: instance, type args, type, cache |
RawInstance* instance = static_cast<RawInstance*>(SP[-3]); |
RawTypeArguments* instantiator_type_arguments = |
static_cast<RawTypeArguments*>(SP[-2]); |
@@ -2984,6 +2984,9 @@ RawObject* Simulator::Call(const Code& code, |
InstanceOfOk: |
SP -= 3; |
+ if (rA) { // Negate result. |
+ SP[0] = (SP[0] == true_value) ? false_value : true_value; |
+ } |
DISPATCH(); |
} |