| Index: pkg/compiler/lib/src/ssa/nodes.dart
|
| diff --git a/pkg/compiler/lib/src/ssa/nodes.dart b/pkg/compiler/lib/src/ssa/nodes.dart
|
| index a8050bd1c78f3a6333bf42f36fa065c0f43f2a34..7337b7b14c7a41568c706f8ce58ad313f60a836d 100644
|
| --- a/pkg/compiler/lib/src/ssa/nodes.dart
|
| +++ b/pkg/compiler/lib/src/ssa/nodes.dart
|
| @@ -2421,12 +2421,20 @@ class HIs extends HInstruction {
|
|
|
| final DartType typeExpression;
|
| final int kind;
|
| + final bool useInstanceOf;
|
|
|
| HIs.direct(DartType typeExpression,
|
| HInstruction expression,
|
| TypeMask type)
|
| : this.internal(typeExpression, [expression], RAW_CHECK, type);
|
|
|
| + // Pre-verified that the check can be done using 'instanceof'.
|
| + HIs.instanceOf(DartType typeExpression,
|
| + HInstruction expression,
|
| + TypeMask type)
|
| + : this.internal(typeExpression, [expression], RAW_CHECK, type,
|
| + useInstanceOf: true);
|
| +
|
| HIs.raw(DartType typeExpression,
|
| HInstruction expression,
|
| HInterceptor interceptor,
|
| @@ -2446,7 +2454,8 @@ class HIs extends HInstruction {
|
| TypeMask type)
|
| : this.internal(typeExpression, [expression, call], VARIABLE_CHECK, type);
|
|
|
| - HIs.internal(this.typeExpression, List<HInstruction> inputs, this.kind, type)
|
| + HIs.internal(this.typeExpression, List<HInstruction> inputs, this.kind,
|
| + TypeMask type, {bool this.useInstanceOf: false})
|
| : super(inputs, type) {
|
| assert(kind >= RAW_CHECK && kind <= VARIABLE_CHECK);
|
| setUseGvn();
|
|
|