| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 library dart2js.new_js_emitter.emitter; | 5 library dart2js.new_js_emitter.emitter; |
| 6 | 6 |
| 7 import 'package:_internal/compiler/js_lib/shared/embedded_names.dart' show | 7 import 'package:_internal/compiler/js_lib/shared/embedded_names.dart' show |
| 8 JsBuiltin, | 8 JsBuiltin, |
| 9 METADATA, | 9 METADATA, |
| 10 TYPES; | 10 TYPES; |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 69 return _emitter.generateEmbeddedGlobalAccess(global); | 69 return _emitter.generateEmbeddedGlobalAccess(global); |
| 70 } | 70 } |
| 71 | 71 |
| 72 @override | 72 @override |
| 73 // TODO(herhut): Use a single shared function. | 73 // TODO(herhut): Use a single shared function. |
| 74 js.Expression generateFunctionThatReturnsNull() { | 74 js.Expression generateFunctionThatReturnsNull() { |
| 75 return js.js('function() {}'); | 75 return js.js('function() {}'); |
| 76 } | 76 } |
| 77 | 77 |
| 78 js.PropertyAccess _globalPropertyAccess(Element element) { | 78 js.PropertyAccess _globalPropertyAccess(Element element) { |
| 79 String name = namer.globalPropertyName(element); | 79 js.Name name = namer.globalPropertyName(element); |
| 80 js.PropertyAccess pa = new js.PropertyAccess.field( | 80 js.PropertyAccess pa = new js.PropertyAccess( |
| 81 new js.VariableUse(namer.globalObjectFor(element)), | 81 new js.VariableUse(namer.globalObjectFor(element)), name); |
| 82 name); | |
| 83 return pa; | 82 return pa; |
| 84 } | 83 } |
| 85 | 84 |
| 86 @override | 85 @override |
| 87 js.Expression isolateLazyInitializerAccess(FieldElement element) { | 86 js.Expression isolateLazyInitializerAccess(FieldElement element) { |
| 88 return js.js('#.#', [namer.globalObjectFor(element), | 87 return js.js('#.#', [namer.globalObjectFor(element), |
| 89 namer.lazyInitializerName(element)]); | 88 namer.lazyInitializerName(element)]); |
| 90 } | 89 } |
| 91 | 90 |
| 92 @override | 91 @override |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 156 case JsBuiltin.createFunctionTypeRti: | 155 case JsBuiltin.createFunctionTypeRti: |
| 157 return _backend.rti.representationGenerator | 156 return _backend.rti.representationGenerator |
| 158 .templateForCreateFunctionType; | 157 .templateForCreateFunctionType; |
| 159 | 158 |
| 160 case JsBuiltin.isSubtype: | 159 case JsBuiltin.isSubtype: |
| 161 // TODO(floitsch): move this closer to where is-check properties are | 160 // TODO(floitsch): move this closer to where is-check properties are |
| 162 // built. | 161 // built. |
| 163 String isPrefix = namer.operatorIsPrefix; | 162 String isPrefix = namer.operatorIsPrefix; |
| 164 return js.js.expressionTemplateFor("('$isPrefix' + #) in #.prototype"); | 163 return js.js.expressionTemplateFor("('$isPrefix' + #) in #.prototype"); |
| 165 | 164 |
| 166 case JsBuiltin.isFunctionTypeRti: | 165 case JsBuiltin.isGivenTypeRti: |
| 167 String functionClassName = | 166 return js.js.expressionTemplateFor('#.$typeNameProperty === #'); |
| 168 _backend.namer.runtimeTypeName(_compiler.functionClass); | |
| 169 return js.js.expressionTemplateFor( | |
| 170 '#.$typeNameProperty === "$functionClassName"'); | |
| 171 | |
| 172 case JsBuiltin.isNullTypeRti: | |
| 173 String nullClassName = | |
| 174 _backend.namer.runtimeTypeName(_compiler.nullClass); | |
| 175 return js.js.expressionTemplateFor( | |
| 176 '#.$typeNameProperty === "$nullClassName"'); | |
| 177 | |
| 178 case JsBuiltin.isDartObjectTypeRti: | |
| 179 String dartObjectClassName = | |
| 180 _backend.namer.runtimeTypeName(_compiler.objectClass); | |
| 181 return js.js.expressionTemplateFor( | |
| 182 '#.$typeNameProperty === "$dartObjectClassName"'); | |
| 183 | 167 |
| 184 case JsBuiltin.getMetadata: | 168 case JsBuiltin.getMetadata: |
| 185 return _emitter.templateForReadMetadata; | 169 return _emitter.templateForReadMetadata; |
| 186 | 170 |
| 187 case JsBuiltin.getType: | 171 case JsBuiltin.getType: |
| 188 return _emitter.templateForReadType; | 172 return _emitter.templateForReadType; |
| 189 | 173 |
| 190 default: | 174 default: |
| 191 _compiler.internalError(NO_LOCATION_SPANNABLE, | 175 _compiler.internalError(NO_LOCATION_SPANNABLE, |
| 192 "Unhandled Builtin: $builtin"); | 176 "Unhandled Builtin: $builtin"); |
| 193 return null; | 177 return null; |
| 194 } | 178 } |
| 195 } | 179 } |
| 196 | 180 |
| 197 @override | 181 @override |
| 198 void invalidateCaches() { | 182 void invalidateCaches() { |
| 199 } | 183 } |
| 200 } | 184 } |
| OLD | NEW |