Index: pkg/compiler/lib/src/cps_ir/cps_ir_builder.dart |
diff --git a/pkg/compiler/lib/src/cps_ir/cps_ir_builder.dart b/pkg/compiler/lib/src/cps_ir/cps_ir_builder.dart |
index 647f48fcafcb6dc8a64a1220a79d81984927ffab..c491237d77c5ef5996ee166a103224f0b060894f 100644 |
--- a/pkg/compiler/lib/src/cps_ir/cps_ir_builder.dart |
+++ b/pkg/compiler/lib/src/cps_ir/cps_ir_builder.dart |
@@ -1645,8 +1645,8 @@ abstract class IrBuilder { |
casesBuilder.state.breakCollectors.add(join); |
for (SwitchCaseInfo caseInfo in cases) { |
buildConditionsFrom(int index) => (IrBuilder builder) { |
- ir.Primitive comparison = builder.addPrimitive( |
- new ir.Identical(value, caseInfo.constants[index])); |
+ ir.Primitive comparison = builder.buildIdentical( |
+ value, caseInfo.constants[index]); |
return (index == caseInfo.constants.length - 1) |
? comparison |
: builder.buildLogicalOperator( |
@@ -2091,6 +2091,11 @@ abstract class IrBuilder { |
// is different on at least two paths. |
return join.continuation.parameters.last; |
} |
+ |
+ ir.Primitive buildIdentical(ir.Primitive x, ir.Primitive y) { |
+ return addPrimitive(new ir.ApplyBuiltinOperator( |
+ ir.BuiltinOperator.Identical, <ir.Primitive>[x, y])); |
+ } |
} |
/// State shared between JsIrBuilders within the same function. |
@@ -2509,7 +2514,7 @@ class JsIrBuilder extends IrBuilder { |
} |
if (type is InterfaceType && type.element == program.nullClass) { |
// `x is Null` is true if and only if x is null. |
- return addPrimitive(new ir.Identical(value, buildNullConstant())); |
+ return _buildCheckNull(value); |
} |
return addPrimitive(new ir.TypeTest(value, type, typeArguments)); |
} else { |
@@ -2535,8 +2540,7 @@ class JsIrBuilder extends IrBuilder { |
/// Creates a type test checking whether [value] is null. |
ir.Primitive _buildCheckNull(ir.Primitive value) { |
assert(isOpen); |
- ir.Primitive right = buildNullConstant(); |
- return addPrimitive(new ir.Identical(value, right)); |
+ return buildIdentical(value, buildNullConstant()); |
} |
/// Convert the given value to a string. |