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

Unified Diff: pkg/compiler/lib/src/js_emitter/new_emitter/model_emitter.dart

Issue 869953002: dart2js: add type lookup in the new emitter. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Addressed comments. 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
« no previous file with comments | « no previous file | pkg/compiler/lib/src/js_emitter/old_emitter/emitter.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/js_emitter/new_emitter/model_emitter.dart
diff --git a/pkg/compiler/lib/src/js_emitter/new_emitter/model_emitter.dart b/pkg/compiler/lib/src/js_emitter/new_emitter/model_emitter.dart
index bc403c94db99a893210367e0efcef738feea8107..d256732244f7a4d2a6a5800021e07248b20d423a 100644
--- a/pkg/compiler/lib/src/js_emitter/new_emitter/model_emitter.dart
+++ b/pkg/compiler/lib/src/js_emitter/new_emitter/model_emitter.dart
@@ -16,7 +16,8 @@ import 'package:_internal/compiler/js_lib/shared/embedded_names.dart' show
DEFERRED_LIBRARY_HASHES,
INITIALIZE_LOADED_HUNK,
IS_HUNK_INITIALIZED,
- IS_HUNK_LOADED;
+ IS_HUNK_LOADED,
+ GET_TYPE_FROM_NAME;
floitsch 2015/01/23 22:33:42 They are sorted by name.
zarah 2015/01/26 17:54:11 Done.
import '../js_emitter.dart' show NativeGenerator;
import '../model.dart';
@@ -135,7 +136,8 @@ class ModelEmitter {
new js.ObjectInitializer(const []))).toList())),
js.js.statement('var holders = #', new js.ArrayInitializer(
holders.map((e) => new js.VariableUse(e.name))
- .toList(growable: false)))
+ .toList(growable: false))),
+ js.js.statement('var holdersMap = {}')
floitsch 2015/01/23 22:32:03 Object.create(null);
zarah 2015/01/26 17:54:11 Done.
];
return new js.Block(statements);
}
@@ -155,6 +157,7 @@ class ModelEmitter {
globals.add(emitInitializeLoadedHunk());
}
+ globals.add(emitGetTypeFromName());
js.ObjectInitializer globalsObject = new js.ObjectInitializer(globals);
List<js.Statement> statements =
@@ -216,6 +219,12 @@ class ModelEmitter {
return new js.Property(js.string(INITIALIZE_LOADED_HUNK), function);
}
+ js.Property emitGetTypeFromName() {
+ js.Expression function =
+ js.js( """function(name) {return holdersMap[name][name];}""");
floitsch 2015/01/23 22:39:21 must call ensureResolved!
zarah 2015/01/26 17:54:11 Done.
+ return new js.Property(js.string(GET_TYPE_FROM_NAME), function);
+ }
+
js.Expression emitDeferredFragment(DeferredFragment fragment,
List<Holder> holders) {
// TODO(floitsch): initialize eager classes.
@@ -415,6 +424,7 @@ class ModelEmitter {
var classes = library[1];
for (var i = 0; i < classes.length; i += 3) {
var holderIndex = classes[i + 1];
+ holdersMap[classes[i]] = holders[holderIndex];
setupClass(classes[i], holders[holderIndex], classes[i + 2]);
}
}
« no previous file with comments | « no previous file | pkg/compiler/lib/src/js_emitter/old_emitter/emitter.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698