Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(349)

Side by Side Diff: pkg/compiler/lib/src/js_emitter/new_emitter/emitter.dart

Issue 1198293002: dart2js: Use an abstract Name class for names in the generated JavaScript ast. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Fix new emitter. Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698