Index: dart/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart |
diff --git a/dart/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart b/dart/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart |
index 88864114d66845cfa24259ff6e301cb7ba73d16a..281a07a5ed1f4c57024c71f6de4da447fcf49031 100644 |
--- a/dart/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart |
+++ b/dart/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart |
@@ -884,8 +884,14 @@ class CodeEmitterTask extends CompilerTask { |
List addLazyInitializerLogic() { |
String isolate = namer.CURRENT_ISOLATE; |
String cyclicThrow = namer.isolateAccess(backend.getCyclicThrowHelper()); |
+ var lazies = []; |
+ if (backend.rememberLazies) { |
+ lazies = [ |
+ js.if_('!init.lazies', js('init.lazies = {}')), |
+ js('init.lazies[fieldName] = getterName')]; |
+ } |
- return [ |
+ return lazies..addAll([ |
js('var sentinelUndefined = {}'), |
js('var sentinelInProgress = {}'), |
js('prototype[fieldName] = sentinelUndefined'), |
@@ -928,7 +934,7 @@ class CodeEmitterTask extends CompilerTask { |
js('$isolate[getterName] = getter') |
]) |
])) |
- ]; |
+ ]); |
} |
List buildDefineClassAndFinishClassFunctionsIfNecessary() { |