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

Side by Side Diff: pkg/compiler/lib/src/js_emitter/new_emitter/model_emitter.dart

Issue 1132363003: dart2js: keep track of non-final static fields. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 7 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 | Annotate | Revision Log
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 library dart2js.new_js_emitter.model_emitter; 5 library dart2js.new_js_emitter.model_emitter;
6 6
7 import '../../constants/values.dart' show ConstantValue, FunctionConstantValue; 7 import '../../constants/values.dart' show ConstantValue, FunctionConstantValue;
8 import '../../dart2jslib.dart' show Compiler; 8 import '../../dart2jslib.dart' show Compiler;
9 import '../../dart_types.dart' show DartType; 9 import '../../dart_types.dart' show DartType;
10 import '../../elements/elements.dart' show ClassElement, FunctionElement; 10 import '../../elements/elements.dart' show ClassElement, FunctionElement;
(...skipping 428 matching lines...) Expand 10 before | Expand all | Expand 10 after
439 List<Holder> holders) { 439 List<Holder> holders) {
440 // TODO(floitsch): initialize eager classes. 440 // TODO(floitsch): initialize eager classes.
441 // TODO(floitsch): the hash must depend on the output. 441 // TODO(floitsch): the hash must depend on the output.
442 int hash = fragment.hashCode; 442 int hash = fragment.hashCode;
443 443
444 List<js.Expression> deferredCode = 444 List<js.Expression> deferredCode =
445 fragment.libraries.map(emitLibrary).toList(); 445 fragment.libraries.map(emitLibrary).toList();
446 446
447 deferredCode.add( 447 deferredCode.add(
448 emitLazilyInitializedStatics(fragment.staticLazilyInitializedFields)); 448 emitLazilyInitializedStatics(fragment.staticLazilyInitializedFields));
449
450 deferredCode.add(emitConstants(fragment.constants)); 449 deferredCode.add(emitConstants(fragment.constants));
451 450
452 js.ArrayInitializer deferredArray = new js.ArrayInitializer(deferredCode); 451 js.ArrayInitializer deferredArray = new js.ArrayInitializer(deferredCode);
453 452
454 // This is the code that must be evaluated after all deferred classes have 453 // This is the code that must be evaluated after all deferred classes have
455 // been setup. 454 // been setup.
456 js.Statement immediateCode = 455 js.Statement immediateCode = new js.Block([
457 emitEagerClassInitializations(fragment.libraries); 456 emitStaticNonFinalFields(fragment.staticNonFinalFields),
457 emitEagerClassInitializations(fragment.libraries)]);
458
sra1 2015/05/12 23:20:02 FYI you could interpolate this with js.statement(
floitsch 2015/05/12 23:34:11 Blocks are flattened by the JS pretty printer too.
458 459
459 js.LiteralString immediateString = unparse(compiler, immediateCode); 460 js.LiteralString immediateString = unparse(compiler, immediateCode);
460 461
461 js.Expression deferredTypes = types == null 462 js.Expression deferredTypes = types == null
462 ? js.string("[]") 463 ? js.string("[]")
463 : unparse(compiler, new js.ArrayInitializer(types)); 464 : unparse(compiler, new js.ArrayInitializer(types));
464 465
465 js.ArrayInitializer hunk = 466 js.ArrayInitializer hunk =
466 new js.ArrayInitializer([deferredArray, immediateString, 467 new js.ArrayInitializer([deferredArray, immediateString,
467 deferredTypes]); 468 deferredTypes]);
(...skipping 706 matching lines...) Expand 10 before | Expand all | Expand 10 after
1174 1175
1175 var end = Date.now(); 1176 var end = Date.now();
1176 // print('Setup: ' + (end - start) + ' ms.'); 1177 // print('Setup: ' + (end - start) + ' ms.');
1177 1178
1178 #invokeMain; // Start main. 1179 #invokeMain; // Start main.
1179 1180
1180 }(Date.now(), #code) 1181 }(Date.now(), #code)
1181 }"""; 1182 }""";
1182 1183
1183 } 1184 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/js_emitter/code_emitter_task.dart ('k') | pkg/compiler/lib/src/js_emitter/program_builder.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698