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

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

Issue 869093003: dart2js: Rename metadataEmitter to metadataCollector and make it independent of old emitter. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Fix more long lines. Created 5 years, 10 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 | Annotate | Revision Log
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; 5 part of dart2js.js_emitter;
6 6
7 class ClassEmitter extends CodeEmitterHelper { 7 class ClassEmitter extends CodeEmitterHelper {
8 8
9 ClassStubGenerator get _stubGenerator => 9 ClassStubGenerator get _stubGenerator =>
10 new ClassStubGenerator(compiler, namer, backend); 10 new ClassStubGenerator(compiler, namer, backend);
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 bool needsSetter = field.needsUncheckedSetter; 111 bool needsSetter = field.needsUncheckedSetter;
112 112
113 // Ignore needsCheckedSetter - that is handled below. 113 // Ignore needsCheckedSetter - that is handled below.
114 bool needsAccessor = (needsGetter || needsSetter); 114 bool needsAccessor = (needsGetter || needsSetter);
115 // We need to output the fields for non-native classes so we can auto- 115 // We need to output the fields for non-native classes so we can auto-
116 // generate the constructor. For native classes there are no 116 // generate the constructor. For native classes there are no
117 // constructors, so we don't need the fields unless we are generating 117 // constructors, so we don't need the fields unless we are generating
118 // accessors at runtime. 118 // accessors at runtime.
119 bool needsFieldsForConstructor = !emitStatics && !classIsNative; 119 bool needsFieldsForConstructor = !emitStatics && !classIsNative;
120 if (needsFieldsForConstructor || needsAccessor) { 120 if (needsFieldsForConstructor || needsAccessor) {
121 var metadata = task.metadataEmitter.buildMetadataFunction(fieldElement); 121 var metadata =
122 task.metadataCollector.buildMetadataFunction(fieldElement);
122 if (metadata != null) { 123 if (metadata != null) {
123 hasMetadata = true; 124 hasMetadata = true;
124 } else { 125 } else {
125 metadata = new jsAst.LiteralNull(); 126 metadata = new jsAst.LiteralNull();
126 } 127 }
127 fieldMetadata.add(metadata); 128 fieldMetadata.add(metadata);
128 recordMangledField(fieldElement, accessorName, 129 recordMangledField(fieldElement, accessorName,
129 namer.privateName(fieldElement.library, fieldElement.name)); 130 namer.privateName(fieldElement.library, fieldElement.name));
130 String fieldName = name; 131 String fieldName = name;
131 String fieldCode = ''; 132 String fieldCode = '';
(...skipping 23 matching lines...) Expand all
155 int code = field.getterFlags + (field.setterFlags << 2); 156 int code = field.getterFlags + (field.setterFlags << 2);
156 if (code == 0) { 157 if (code == 0) {
157 compiler.internalError(fieldElement, 158 compiler.internalError(fieldElement,
158 'Field code is 0 ($fieldElement).'); 159 'Field code is 0 ($fieldElement).');
159 } else { 160 } else {
160 fieldCode = FIELD_CODE_CHARACTERS[code - FIRST_FIELD_CODE]; 161 fieldCode = FIELD_CODE_CHARACTERS[code - FIRST_FIELD_CODE];
161 } 162 }
162 } 163 }
163 if (backend.isAccessibleByReflection(fieldElement)) { 164 if (backend.isAccessibleByReflection(fieldElement)) {
164 DartType type = fieldElement.type; 165 DartType type = fieldElement.type;
165 reflectionMarker = '-${task.metadataEmitter.reifyType(type)}'; 166 reflectionMarker = '-${task.metadataCollector.reifyType(type)}';
166 } 167 }
167 String builtFieldname = '$fieldName$fieldCode$reflectionMarker'; 168 String builtFieldname = '$fieldName$fieldCode$reflectionMarker';
168 builder.addField(builtFieldname); 169 builder.addField(builtFieldname);
169 // Add 1 because adding a field to the class also requires a comma 170 // Add 1 because adding a field to the class also requires a comma
170 compiler.dumpInfoTask.recordFieldNameSize(fieldElement, 171 compiler.dumpInfoTask.recordFieldNameSize(fieldElement,
171 builtFieldname.length + 1); 172 builtFieldname.length + 1);
172 fieldsAdded = true; 173 fieldsAdded = true;
173 } 174 }
174 } 175 }
175 176
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
271 builder.addProperty(namer.nativeSpecProperty, js.string(cls.nativeInfo)); 272 builder.addProperty(namer.nativeSpecProperty, js.string(cls.nativeInfo));
272 } 273 }
273 } 274 }
274 275
275 void emitClassBuilderWithReflectionData(Class cls, 276 void emitClassBuilderWithReflectionData(Class cls,
276 ClassBuilder classBuilder, 277 ClassBuilder classBuilder,
277 ClassBuilder enclosingBuilder) { 278 ClassBuilder enclosingBuilder) {
278 ClassElement classElement = cls.element; 279 ClassElement classElement = cls.element;
279 String className = cls.name; 280 String className = cls.name;
280 281
281 var metadata = task.metadataEmitter.buildMetadataFunction(classElement); 282 var metadata = task.metadataCollector.buildMetadataFunction(classElement);
282 if (metadata != null) { 283 if (metadata != null) {
283 classBuilder.addProperty("@", metadata); 284 classBuilder.addProperty("@", metadata);
284 } 285 }
285 286
286 if (backend.isAccessibleByReflection(classElement)) { 287 if (backend.isAccessibleByReflection(classElement)) {
287 List<DartType> typeVars = classElement.typeVariables; 288 List<DartType> typeVars = classElement.typeVariables;
288 Iterable typeVariableProperties = emitter.typeVariableHandler 289 Iterable typeVariableProperties = emitter.typeVariableHandler
289 .typeVariablesOf(classElement).map(js.number); 290 .typeVariablesOf(classElement).map(js.number);
290 291
291 ClassElement superclass = classElement.superclass; 292 ClassElement superclass = classElement.superclass;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 compiler.dumpInfoTask.registerElementAst(classBuilder.element, propertyValue ); 325 compiler.dumpInfoTask.registerElementAst(classBuilder.element, propertyValue );
325 enclosingBuilder.addProperty(className, propertyValue); 326 enclosingBuilder.addProperty(className, propertyValue);
326 327
327 String reflectionName = emitter.getReflectionName(classElement, className); 328 String reflectionName = emitter.getReflectionName(classElement, className);
328 if (reflectionName != null) { 329 if (reflectionName != null) {
329 if (!backend.isAccessibleByReflection(classElement)) { 330 if (!backend.isAccessibleByReflection(classElement)) {
330 enclosingBuilder.addProperty("+$reflectionName", js.number(0)); 331 enclosingBuilder.addProperty("+$reflectionName", js.number(0));
331 } else { 332 } else {
332 List<int> types = <int>[]; 333 List<int> types = <int>[];
333 if (classElement.supertype != null) { 334 if (classElement.supertype != null) {
334 types.add(task.metadataEmitter.reifyType(classElement.supertype)); 335 types.add(task.metadataCollector.reifyType(classElement.supertype));
335 } 336 }
336 for (DartType interface in classElement.interfaces) { 337 for (DartType interface in classElement.interfaces) {
337 types.add(task.metadataEmitter.reifyType(interface)); 338 types.add(task.metadataCollector.reifyType(interface));
338 } 339 }
339 enclosingBuilder.addProperty("+$reflectionName", 340 enclosingBuilder.addProperty("+$reflectionName",
340 new jsAst.ArrayInitializer(types.map(js.number).toList())); 341 new jsAst.ArrayInitializer(types.map(js.number).toList()));
341 } 342 }
342 } 343 }
343 } 344 }
344 345
345 /** 346 /**
346 * Invokes [f] for each of the fields of [element]. 347 * Invokes [f] for each of the fields of [element].
347 * 348 *
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
587 js.number(index)); 588 js.number(index));
588 } 589 }
589 jsAst.Expression convertRtiToRuntimeType = emitter 590 jsAst.Expression convertRtiToRuntimeType = emitter
590 .staticFunctionAccess(backend.findHelper('convertRtiToRuntimeType')); 591 .staticFunctionAccess(backend.findHelper('convertRtiToRuntimeType'));
591 compiler.dumpInfoTask.registerElementAst(element, 592 compiler.dumpInfoTask.registerElementAst(element,
592 builder.addProperty(name, 593 builder.addProperty(name,
593 js('function () { return #(#) }', 594 js('function () { return #(#) }',
594 [convertRtiToRuntimeType, computeTypeVariable]))); 595 [convertRtiToRuntimeType, computeTypeVariable])));
595 } 596 }
596 } 597 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698