| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 import '../compiler.dart' show Compiler; | 5 import '../compiler.dart' show Compiler; |
| 6 import '../elements/resolution_types.dart'; | 6 import '../elements/resolution_types.dart'; |
| 7 import '../elements/elements.dart'; | 7 import '../elements/elements.dart'; |
| 8 import '../js/js.dart' as jsAst; | 8 import '../js/js.dart' as jsAst; |
| 9 import '../js/js.dart' show js; | 9 import '../js/js.dart' show js; |
| 10 import '../ssa/codegen.dart' show SsaCodeGenerator; | 10 import '../ssa/codegen.dart' show SsaCodeGenerator; |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 97 } | 97 } |
| 98 } | 98 } |
| 99 | 99 |
| 100 class PropertyCheckedModeHelper extends CheckedModeHelper { | 100 class PropertyCheckedModeHelper extends CheckedModeHelper { |
| 101 const PropertyCheckedModeHelper(String name) : super(name); | 101 const PropertyCheckedModeHelper(String name) : super(name); |
| 102 | 102 |
| 103 CallStructure get callStructure => CallStructure.TWO_ARGS; | 103 CallStructure get callStructure => CallStructure.TWO_ARGS; |
| 104 | 104 |
| 105 void generateAdditionalArguments(SsaCodeGenerator codegen, | 105 void generateAdditionalArguments(SsaCodeGenerator codegen, |
| 106 HTypeConversion node, List<jsAst.Expression> arguments) { | 106 HTypeConversion node, List<jsAst.Expression> arguments) { |
| 107 DartType type = node.typeExpression; | 107 ResolutionDartType type = node.typeExpression; |
| 108 jsAst.Name additionalArgument = codegen.backend.namer.operatorIsType(type); | 108 jsAst.Name additionalArgument = codegen.backend.namer.operatorIsType(type); |
| 109 arguments.add(js.quoteName(additionalArgument)); | 109 arguments.add(js.quoteName(additionalArgument)); |
| 110 } | 110 } |
| 111 } | 111 } |
| 112 | 112 |
| 113 class TypeVariableCheckedModeHelper extends CheckedModeHelper { | 113 class TypeVariableCheckedModeHelper extends CheckedModeHelper { |
| 114 const TypeVariableCheckedModeHelper(String name) : super(name); | 114 const TypeVariableCheckedModeHelper(String name) : super(name); |
| 115 | 115 |
| 116 CallStructure get callStructure => CallStructure.TWO_ARGS; | 116 CallStructure get callStructure => CallStructure.TWO_ARGS; |
| 117 | 117 |
| 118 void generateAdditionalArguments(SsaCodeGenerator codegen, | 118 void generateAdditionalArguments(SsaCodeGenerator codegen, |
| 119 HTypeConversion node, List<jsAst.Expression> arguments) { | 119 HTypeConversion node, List<jsAst.Expression> arguments) { |
| 120 assert(node.typeExpression.isTypeVariable); | 120 assert(node.typeExpression.isTypeVariable); |
| 121 codegen.use(node.typeRepresentation); | 121 codegen.use(node.typeRepresentation); |
| 122 arguments.add(codegen.pop()); | 122 arguments.add(codegen.pop()); |
| 123 } | 123 } |
| 124 } | 124 } |
| 125 | 125 |
| 126 class SubtypeCheckedModeHelper extends CheckedModeHelper { | 126 class SubtypeCheckedModeHelper extends CheckedModeHelper { |
| 127 const SubtypeCheckedModeHelper(String name) : super(name); | 127 const SubtypeCheckedModeHelper(String name) : super(name); |
| 128 | 128 |
| 129 CallStructure get callStructure => const CallStructure.unnamed(4); | 129 CallStructure get callStructure => const CallStructure.unnamed(4); |
| 130 | 130 |
| 131 void generateAdditionalArguments(SsaCodeGenerator codegen, | 131 void generateAdditionalArguments(SsaCodeGenerator codegen, |
| 132 HTypeConversion node, List<jsAst.Expression> arguments) { | 132 HTypeConversion node, List<jsAst.Expression> arguments) { |
| 133 DartType type = node.typeExpression; | 133 ResolutionDartType type = node.typeExpression; |
| 134 Element element = type.element; | 134 Element element = type.element; |
| 135 jsAst.Name isField = codegen.backend.namer.operatorIs(element); | 135 jsAst.Name isField = codegen.backend.namer.operatorIs(element); |
| 136 arguments.add(js.quoteName(isField)); | 136 arguments.add(js.quoteName(isField)); |
| 137 codegen.use(node.typeRepresentation); | 137 codegen.use(node.typeRepresentation); |
| 138 arguments.add(codegen.pop()); | 138 arguments.add(codegen.pop()); |
| 139 jsAst.Name asField = codegen.backend.namer.substitutionName(element); | 139 jsAst.Name asField = codegen.backend.namer.substitutionName(element); |
| 140 arguments.add(js.quoteName(asField)); | 140 arguments.add(js.quoteName(asField)); |
| 141 } | 141 } |
| 142 } | 142 } |
| OLD | NEW |