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

Side by Side Diff: pkg/compiler/lib/src/js_backend/constant_handler_javascript.dart

Issue 2023863002: Register deserialized lazy statics. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 4 years, 6 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 part of js_backend; 5 part of js_backend;
6 6
7 /// [ConstantCompilerTask] for compilation of constants for the JavaScript 7 /// [ConstantCompilerTask] for compilation of constants for the JavaScript
8 /// backend. 8 /// backend.
9 /// 9 ///
10 /// Since this task needs to distinguish between frontend and backend constants 10 /// Since this task needs to distinguish between frontend and backend constants
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 ConstantExpression compileVariableWithDefinitions( 125 ConstantExpression compileVariableWithDefinitions(
126 VariableElement element, TreeElements definitions, 126 VariableElement element, TreeElements definitions,
127 {bool isConst: false, bool checkType: true}) { 127 {bool isConst: false, bool checkType: true}) {
128 if (!isConst && lazyStatics.contains(element)) { 128 if (!isConst && lazyStatics.contains(element)) {
129 return null; 129 return null;
130 } 130 }
131 ConstantExpression value = super.compileVariableWithDefinitions( 131 ConstantExpression value = super.compileVariableWithDefinitions(
132 element, definitions, 132 element, definitions,
133 isConst: isConst, checkType: checkType); 133 isConst: isConst, checkType: checkType);
134 if (!isConst && value == null) { 134 if (!isConst && value == null) {
135 lazyStatics.add(element); 135 registerLazyStatic(element);
136 } 136 }
137 return value; 137 return value;
138 } 138 }
139 139
140 @override
141 void registerLazyStatic(FieldElement element) {
142 lazyStatics.add(element);
143 }
144
140 void addCompileTimeConstantForEmission(ConstantValue constant) { 145 void addCompileTimeConstantForEmission(ConstantValue constant) {
141 compiledConstants.add(constant); 146 compiledConstants.add(constant);
142 } 147 }
143 148
144 /** 149 /**
145 * Returns an [Iterable] of static non final fields that need to be 150 * Returns an [Iterable] of static non final fields that need to be
146 * initialized. The fields list must be evaluated in order since they might 151 * initialized. The fields list must be evaluated in order since they might
147 * depend on each other. 152 * depend on each other.
148 */ 153 */
149 Iterable<VariableElement> getStaticNonFinalFieldsForEmission() { 154 Iterable<VariableElement> getStaticNonFinalFieldsForEmission() {
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 // TODO(ahe): This doesn't belong here. Rename this class and generalize. 313 // TODO(ahe): This doesn't belong here. Rename this class and generalize.
309 var closureClassMap = constants 314 var closureClassMap = constants
310 .compiler.closureToClassMapper.closureMappingCache 315 .compiler.closureToClassMapper.closureMappingCache
311 .remove(node); 316 .remove(node);
312 if (closureClassMap != null) { 317 if (closureClassMap != null) {
313 closureClassMap 318 closureClassMap
314 .removeMyselfFrom(constants.compiler.enqueuer.codegen.universe); 319 .removeMyselfFrom(constants.compiler.enqueuer.codegen.universe);
315 } 320 }
316 } 321 }
317 } 322 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698