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 |