Index: pkg/compiler/lib/src/js_emitter/model.dart |
diff --git a/pkg/compiler/lib/src/js_emitter/model.dart b/pkg/compiler/lib/src/js_emitter/model.dart |
index e0a8fda68e242fc7a187b34cbe0375f2b2bb86f1..3df86b844422fbf37d09cf3f9aec5ffc0b6b9d5d 100644 |
--- a/pkg/compiler/lib/src/js_emitter/model.dart |
+++ b/pkg/compiler/lib/src/js_emitter/model.dart |
@@ -16,6 +16,7 @@ class Program { |
final bool outputContainsConstantList; |
final bool needsNativeSupport; |
final bool hasIsolateSupport; |
+ final bool hasSoftDeferredClasses; |
/// A map from load id to the list of fragments that need to be loaded. |
final Map<String, List<Fragment>> loadMap; |
@@ -38,7 +39,8 @@ class Program { |
this.typeToInterceptorMap, this._metadataCollector, this.finalizers, |
{this.needsNativeSupport, |
this.outputContainsConstantList, |
- this.hasIsolateSupport}) { |
+ this.hasIsolateSupport, |
+ this.hasSoftDeferredClasses}) { |
assert(needsNativeSupport != null); |
assert(outputContainsConstantList != null); |
assert(hasIsolateSupport != null); |
@@ -232,6 +234,11 @@ class Class implements FieldContainer { |
final bool isNative; |
final bool isClosureBaseClass; // Common base class for closures. |
+ /// Whether this class should be soft deferred. |
+ /// |
+ /// A soft-deferred class is only fully initialized at first instantiation. |
+ final bool isSoftDeferred; |
+ |
// If the class implements a function type, and the type is encoded in the |
// metatada table, then this field contains the index into that field. |
final js.Expression functionTypeIndex; |
@@ -264,7 +271,8 @@ class Class implements FieldContainer { |
this.onlyForRti, |
this.isDirectlyInstantiated, |
this.isNative, |
- this.isClosureBaseClass}) { |
+ this.isClosureBaseClass, |
+ this.isSoftDeferred = false}) { |
assert(onlyForRti != null); |
assert(isDirectlyInstantiated != null); |
assert(isNative != null); |