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

Side by Side Diff: pkg/compiler/lib/src/js_emitter/full_emitter/class_emitter.dart

Issue 2647893002: Use entities in js_emitter/model.dart (Closed)
Patch Set: Created 3 years, 11 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) 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 part of dart2js.js_emitter.full_emitter; 5 part of dart2js.js_emitter.full_emitter;
6 6
7 class ClassEmitter extends CodeEmitterHelper { 7 class ClassEmitter extends CodeEmitterHelper {
8 final ClosedWorld closedWorld; 8 final ClosedWorld closedWorld;
9 9
10 ClassEmitter(this.closedWorld); 10 ClassEmitter(this.closedWorld);
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 builder.fieldMetadata = fieldMetadata; 192 builder.fieldMetadata = fieldMetadata;
193 } 193 }
194 return fieldsAdded; 194 return fieldsAdded;
195 } 195 }
196 196
197 /// Emits checked setters for fields. 197 /// Emits checked setters for fields.
198 void emitCheckedClassSetters(Class cls, ClassBuilder builder) { 198 void emitCheckedClassSetters(Class cls, ClassBuilder builder) {
199 if (cls.onlyForRti) return; 199 if (cls.onlyForRti) return;
200 200
201 for (StubMethod method in cls.checkedSetters) { 201 for (StubMethod method in cls.checkedSetters) {
202 Element member = method.element; 202 MemberElement member = method.element;
203 assert(member != null); 203 assert(member != null);
204 jsAst.Expression code = method.code; 204 jsAst.Expression code = method.code;
205 jsAst.Name setterName = method.name; 205 jsAst.Name setterName = method.name;
206 compiler.dumpInfoTask 206 compiler.dumpInfoTask
207 .registerElementAst(member, builder.addProperty(setterName, code)); 207 .registerElementAst(member, builder.addProperty(setterName, code));
208 generateReflectionDataForFieldGetterOrSetter(member, setterName, builder, 208 generateReflectionDataForFieldGetterOrSetter(member, setterName, builder,
209 isGetter: false); 209 isGetter: false);
210 } 210 }
211 } 211 }
212 212
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 assert(invariant(classElement, classElement.isDeclaration)); 244 assert(invariant(classElement, classElement.isDeclaration));
245 245
246 if (cls.onlyForRti || cls.isMixinApplication) return; 246 if (cls.onlyForRti || cls.isMixinApplication) return;
247 247
248 // TODO(herhut): This is a no-op. Should it be removed? 248 // TODO(herhut): This is a no-op. Should it be removed?
249 for (Field field in cls.fields) { 249 for (Field field in cls.fields) {
250 emitter.containerBuilder.addMemberField(field, builder); 250 emitter.containerBuilder.addMemberField(field, builder);
251 } 251 }
252 252
253 for (Method method in cls.methods) { 253 for (Method method in cls.methods) {
254 assert(invariant(classElement, method.element.isDeclaration));
255 assert(invariant(classElement, method.element.isInstanceMember)); 254 assert(invariant(classElement, method.element.isInstanceMember));
256 emitter.containerBuilder.addMemberMethod(method, builder); 255 emitter.containerBuilder.addMemberMethod(method, builder);
257 } 256 }
258 257
259 if (classElement.isObject && backend.enabledNoSuchMethod) { 258 if (classElement.isObject && backend.enabledNoSuchMethod) {
260 // Emit the noSuchMethod handlers on the Object prototype now, 259 // Emit the noSuchMethod handlers on the Object prototype now,
261 // so that the code in the dynamicFunction helper can find 260 // so that the code in the dynamicFunction helper can find
262 // them. Note that this helper is invoked before analyzing the 261 // them. Note that this helper is invoked before analyzing the
263 // full JS script. 262 // full JS script.
264 emitter.nsmEmitter.emitNoSuchMethodHandlers(builder.addProperty); 263 emitter.nsmEmitter.emitNoSuchMethodHandlers(builder.addProperty);
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
422 : new Selector.setter( 421 : new Selector.setter(
423 new Name(member.name, member.library, isSetter: true)); 422 new Name(member.name, member.library, isSetter: true));
424 String reflectionName = emitter.getReflectionName(selector, name); 423 String reflectionName = emitter.getReflectionName(selector, name);
425 if (reflectionName != null) { 424 if (reflectionName != null) {
426 var reflectable = 425 var reflectable =
427 js(backend.isAccessibleByReflection(member) ? '1' : '0'); 426 js(backend.isAccessibleByReflection(member) ? '1' : '0');
428 builder.addPropertyByName('+$reflectionName', reflectable); 427 builder.addPropertyByName('+$reflectionName', reflectable);
429 } 428 }
430 } 429 }
431 } 430 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698