Chromium Code Reviews| 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]); |
| } |
| } |