Index: pkg/compiler/lib/src/js_backend/codegen/codegen.dart |
diff --git a/pkg/compiler/lib/src/js_backend/codegen/codegen.dart b/pkg/compiler/lib/src/js_backend/codegen/codegen.dart |
index 2998a5bc2f8db96bc219513f6f25360d220b7a74..2f2d997f580e79f3ac8d8571d977a1bd4692ad85 100644 |
--- a/pkg/compiler/lib/src/js_backend/codegen/codegen.dart |
+++ b/pkg/compiler/lib/src/js_backend/codegen/codegen.dart |
@@ -590,13 +590,20 @@ class CodeGenerator extends tree_ir.StatementVisitor |
@override |
js.Expression visitGetStatic(tree_ir.GetStatic node) { |
assert(node.element is FieldElement || node.element is FunctionElement); |
- if (node.element is FieldElement) { |
- registry.registerStaticUse(node.element.declaration); |
- return glue.staticFieldAccess(node.element); |
- } else { |
+ if (node.element is FunctionElement) { |
+ // Tear off a method. |
registry.registerGetOfStaticFunction(node.element.declaration); |
return glue.isolateStaticClosureAccess(node.element); |
} |
+ if (glue.isLazilyInitialized(node.element)) { |
+ // Read a lazily initialized field. |
+ registry.registerStaticUse(node.element.declaration); |
+ js.Expression getter = glue.isolateLazyInitializerAccess(node.element); |
+ return new js.Call(getter, [], sourceInformation: node.sourceInformation); |
+ } |
+ // Read an eagerly initialized field. |
+ registry.registerStaticUse(node.element.declaration); |
+ return glue.staticFieldAccess(node.element); |
} |
@override |