| Index: pkg/compiler/lib/src/js_backend/checked_mode_helpers.dart
|
| diff --git a/pkg/compiler/lib/src/js_backend/checked_mode_helpers.dart b/pkg/compiler/lib/src/js_backend/checked_mode_helpers.dart
|
| index 8a3fe64d49478941807189871458aa6a70528661..9f884bae67447852c8e6e7af5f72045f4769abfd 100644
|
| --- a/pkg/compiler/lib/src/js_backend/checked_mode_helpers.dart
|
| +++ b/pkg/compiler/lib/src/js_backend/checked_mode_helpers.dart
|
| @@ -15,6 +15,7 @@ import '../ssa/nodes.dart' show HTypeConversion;
|
| import '../universe/call_structure.dart' show CallStructure;
|
| import '../universe/use.dart' show StaticUse;
|
| import 'backend_helpers.dart';
|
| +import 'namer.dart' show Namer;
|
|
|
| class CheckedModeHelper {
|
| final String name;
|
| @@ -30,20 +31,7 @@ class CheckedModeHelper {
|
|
|
| CallStructure get callStructure => CallStructure.ONE_ARG;
|
|
|
| - jsAst.Expression generateCall(
|
| - SsaCodeGenerator codegen, HTypeConversion node) {
|
| - StaticUse staticUse = getStaticUse(codegen.backend.helpers);
|
| - codegen.registry.registerStaticUse(staticUse);
|
| - List<jsAst.Expression> arguments = <jsAst.Expression>[];
|
| - codegen.use(node.checkedInput);
|
| - arguments.add(codegen.pop());
|
| - generateAdditionalArguments(codegen, node, arguments);
|
| - jsAst.Expression helper =
|
| - codegen.backend.emitter.staticFunctionAccess(staticUse.element);
|
| - return new jsAst.Call(helper, arguments);
|
| - }
|
| -
|
| - void generateAdditionalArguments(SsaCodeGenerator codegen,
|
| + void generateAdditionalArguments(SsaCodeGenerator codegen, Namer namer,
|
| HTypeConversion node, List<jsAst.Expression> arguments) {
|
| // No additional arguments needed.
|
| }
|
| @@ -54,7 +42,7 @@ class MalformedCheckedModeHelper extends CheckedModeHelper {
|
|
|
| CallStructure get callStructure => CallStructure.TWO_ARGS;
|
|
|
| - void generateAdditionalArguments(SsaCodeGenerator codegen,
|
| + void generateAdditionalArguments(SsaCodeGenerator codegen, Namer namer,
|
| HTypeConversion node, List<jsAst.Expression> arguments) {
|
| // TODO(johnniwinther): Support malformed types in [types.dart].
|
| MalformedType type = node.typeExpression;
|
| @@ -68,10 +56,10 @@ class PropertyCheckedModeHelper extends CheckedModeHelper {
|
|
|
| CallStructure get callStructure => CallStructure.TWO_ARGS;
|
|
|
| - void generateAdditionalArguments(SsaCodeGenerator codegen,
|
| + void generateAdditionalArguments(SsaCodeGenerator codegen, Namer namer,
|
| HTypeConversion node, List<jsAst.Expression> arguments) {
|
| DartType type = node.typeExpression;
|
| - jsAst.Name additionalArgument = codegen.backend.namer.operatorIsType(type);
|
| + jsAst.Name additionalArgument = namer.operatorIsType(type);
|
| arguments.add(js.quoteName(additionalArgument));
|
| }
|
| }
|
| @@ -81,7 +69,7 @@ class TypeVariableCheckedModeHelper extends CheckedModeHelper {
|
|
|
| CallStructure get callStructure => CallStructure.TWO_ARGS;
|
|
|
| - void generateAdditionalArguments(SsaCodeGenerator codegen,
|
| + void generateAdditionalArguments(SsaCodeGenerator codegen, Namer namer,
|
| HTypeConversion node, List<jsAst.Expression> arguments) {
|
| assert(node.typeExpression.isTypeVariable);
|
| codegen.use(node.typeRepresentation);
|
| @@ -94,7 +82,7 @@ class FunctionTypeRepresentationCheckedModeHelper extends CheckedModeHelper {
|
|
|
| CallStructure get callStructure => CallStructure.TWO_ARGS;
|
|
|
| - void generateAdditionalArguments(SsaCodeGenerator codegen,
|
| + void generateAdditionalArguments(SsaCodeGenerator codegen, Namer namer,
|
| HTypeConversion node, List<jsAst.Expression> arguments) {
|
| assert(node.typeExpression.isFunctionType);
|
| codegen.use(node.typeRepresentation);
|
| @@ -107,17 +95,17 @@ class SubtypeCheckedModeHelper extends CheckedModeHelper {
|
|
|
| CallStructure get callStructure => const CallStructure.unnamed(4);
|
|
|
| - void generateAdditionalArguments(SsaCodeGenerator codegen,
|
| + void generateAdditionalArguments(SsaCodeGenerator codegen, Namer namer,
|
| HTypeConversion node, List<jsAst.Expression> arguments) {
|
| // TODO(sra): Move these calls into the SSA graph so that the arguments can
|
| // be optimized, e,g, GVNed.
|
| InterfaceType type = node.typeExpression;
|
| ClassEntity element = type.element;
|
| - jsAst.Name isField = codegen.backend.namer.operatorIs(element);
|
| + jsAst.Name isField = namer.operatorIs(element);
|
| arguments.add(js.quoteName(isField));
|
| codegen.use(node.typeRepresentation);
|
| arguments.add(codegen.pop());
|
| - jsAst.Name asField = codegen.backend.namer.substitutionName(element);
|
| + jsAst.Name asField = namer.substitutionName(element);
|
| arguments.add(js.quoteName(asField));
|
| }
|
| }
|
|
|