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

Unified Diff: pkg/compiler/lib/src/js_emitter/old_emitter/emitter.dart

Issue 869513003: dart2js: Move metadata from old_emitter to shared directory. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 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 side-by-side diff with in-line comments
Download patch
Index: pkg/compiler/lib/src/js_emitter/old_emitter/emitter.dart
diff --git a/pkg/compiler/lib/src/js_emitter/old_emitter/emitter.dart b/pkg/compiler/lib/src/js_emitter/old_emitter/emitter.dart
index 26e067d77f2d801e76db2313234f44a547c68740..d1f4b297649cab58daed40b93a5b833680b10c53 100644
--- a/pkg/compiler/lib/src/js_emitter/old_emitter/emitter.dart
+++ b/pkg/compiler/lib/src/js_emitter/old_emitter/emitter.dart
@@ -13,7 +13,6 @@ class OldEmitter implements Emitter {
final ClassEmitter classEmitter = new ClassEmitter();
final NsmEmitter nsmEmitter = new NsmEmitter();
final InterceptorEmitter interceptorEmitter = new InterceptorEmitter();
- final MetadataEmitter metadataEmitter = new MetadataEmitter();
// TODO(johnniwinther): Wrap these fields in a caching strategy.
final Set<ConstantValue> cachedEmittedConstants;
@@ -102,7 +101,6 @@ class OldEmitter implements Emitter {
classEmitter.emitter = this;
nsmEmitter.emitter = this;
interceptorEmitter.emitter = this;
- metadataEmitter.emitter = this;
}
List<jsAst.Node> cspPrecompiledFunctionFor(OutputUnit outputUnit) {
@@ -796,6 +794,23 @@ class OldEmitter implements Emitter {
code]);
}
+ void emitMetadata(List<String> globalMetadata, CodeOutput output) {
+ String metadataAccess =
+ generateEmbeddedGlobalAccessString(embeddedNames.METADATA);
+ output.add('$metadataAccess$_=$_[');
+ for (String metadata in globalMetadata) {
+ if (metadata is String) {
+ if (metadata != 'null') {
+ output.add(metadata);
+ }
+ } else {
+ throw 'Unexpected value in metadata: ${Error.safeToString(metadata)}';
+ }
+ output.add(',$n');
+ }
+ output.add('];$n');
+ }
+
bool isConstantInlinedOrAlreadyEmitted(ConstantValue constant) {
if (constant.isFunction) return true; // Already emitted.
if (constant.isPrimitive) return true; // Inlined.
@@ -1169,7 +1184,7 @@ class OldEmitter implements Emitter {
library.getLibraryName() :
"";
- jsAst.Fun metadata = metadataEmitter.buildMetadataFunction(library);
+ jsAst.Fun metadata = task.metadataEmitter.buildMetadataFunction(library);
jsAst.ObjectInitializer initializers = descriptor.toObjectInitializer();
@@ -1238,7 +1253,7 @@ class OldEmitter implements Emitter {
LibraryElement library = typedef.library;
// TODO(karlklose): add a TypedefBuilder and move this code there.
DartType type = typedef.alias;
- int typeIndex = metadataEmitter.reifyType(type);
+ int typeIndex = task.metadataEmitter.reifyType(type);
ClassBuilder builder = new ClassBuilder(typedef, namer);
builder.addProperty(embeddedNames.TYPEDEF_TYPE_PROPERTY_NAME,
js.number(typeIndex));
@@ -1499,7 +1514,7 @@ class OldEmitter implements Emitter {
mainOutput.add('\n');
- metadataEmitter.emitMetadata(mainOutput);
+ emitMetadata(task.metadataEmitter.globalMetadata, mainOutput);
isolateProperties = isolatePropertiesName;
// The following code should not use the short-hand for the

Powered by Google App Engine
This is Rietveld 408576698