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

Side by Side Diff: dart/pkg/dart2js_incremental/lib/library_updater.dart

Issue 738423002: Use serialized scope info to test incremental compiler. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Merged with r41954. Created 6 years 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
« no previous file with comments | « dart/pkg/dart2js_incremental/lib/dart2js_incremental.dart ('k') | dart/site/try/poi/poi.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_incremental.library_updater; 5 library dart2js_incremental.library_updater;
6 6
7 import 'dart:async' show 7 import 'dart:async' show
8 Future; 8 Future;
9 9
10 import 'dart:convert' show 10 import 'dart:convert' show
(...skipping 527 matching lines...) Expand 10 before | Expand all | Expand 10 after
538 538
539 List<Update> removals = <Update>[]; 539 List<Update> removals = <Update>[];
540 List<Element> updatedElements = applyUpdates(removals); 540 List<Element> updatedElements = applyUpdates(removals);
541 if (compiler.progress != null) { 541 if (compiler.progress != null) {
542 compiler.progress.reset(); 542 compiler.progress.reset();
543 } 543 }
544 for (Element element in updatedElements) { 544 for (Element element in updatedElements) {
545 if (!element.isClass) { 545 if (!element.isClass) {
546 compiler.enqueuer.resolution.addToWorkList(element); 546 compiler.enqueuer.resolution.addToWorkList(element);
547 } else { 547 } else {
548 element.ensureResolved(compiler); 548 NO_WARN(element).ensureResolved(compiler);
549 } 549 }
550 } 550 }
551 compiler.processQueue(compiler.enqueuer.resolution, null); 551 compiler.processQueue(compiler.enqueuer.resolution, null);
552 552
553 compiler.phase = Compiler.PHASE_DONE_RESOLVING; 553 compiler.phase = Compiler.PHASE_DONE_RESOLVING;
554 554
555 // TODO(ahe): Clean this up. Don't call this method in analyze-only mode. 555 // TODO(ahe): Clean this up. Don't call this method in analyze-only mode.
556 if (compiler.analyzeOnly) return "/* analyze only */"; 556 if (compiler.analyzeOnly) return "/* analyze only */";
557 557
558 Set<ClassElementX> changedClasses = 558 Set<ClassElementX> changedClasses =
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
749 PartialFunctionElement get before; 749 PartialFunctionElement get before;
750 750
751 /// Reset various caches and remove this element from the compiler's internal 751 /// Reset various caches and remove this element from the compiler's internal
752 /// state. 752 /// state.
753 void reuseElement() { 753 void reuseElement() {
754 compiler.forgetElement(before); 754 compiler.forgetElement(before);
755 before.reuseElement(); 755 before.reuseElement();
756 } 756 }
757 } 757 }
758 758
759 class RemovalUpdate extends Update { 759 abstract class RemovalUpdate extends Update {
760 ElementX get element; 760 ElementX get element;
761 761
762 RemovalUpdate(Compiler compiler) 762 RemovalUpdate(Compiler compiler)
763 : super(compiler); 763 : super(compiler);
764 764
765 bool get isRemoval => true; 765 bool get isRemoval => true;
766 766
767 void writeUpdateJsOn(List<jsAst.Statement> updates); 767 void writeUpdateJsOn(List<jsAst.Statement> updates);
768 768
769 void removeFromEnclosing() { 769 void removeFromEnclosing() {
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
912 912
913 for (jsAst.Node access in accessToStatics) { 913 for (jsAst.Node access in accessToStatics) {
914 updates.add(js.statement('delete #', [access])); 914 updates.add(js.statement('delete #', [access]));
915 } 915 }
916 } 916 }
917 } 917 }
918 918
919 class RemovedFieldUpdate extends RemovalUpdate with JsFeatures { 919 class RemovedFieldUpdate extends RemovalUpdate with JsFeatures {
920 final FieldElementX element; 920 final FieldElementX element;
921 921
922 bool wasStateCaptured; 922 bool wasStateCaptured = false;
923 923
924 jsAst.Node elementAccess; 924 jsAst.Node elementAccess;
925 925
926 String getterName; 926 String getterName;
927 927
928 String setterName; 928 String setterName;
929 929
930 RemovedFieldUpdate(Compiler compiler, this.element) 930 RemovedFieldUpdate(Compiler compiler, this.element)
931 : super(compiler); 931 : super(compiler);
932 932
933 PartialFieldList get before => element.declarationSite;
934
935 PartialFieldList get after => null;
936
933 void captureState() { 937 void captureState() {
934 if (wasStateCaptured) throw "captureState was called twice."; 938 if (wasStateCaptured) throw "captureState was called twice.";
935 wasStateCaptured = true; 939 wasStateCaptured = true;
936 940
937 elementAccess = namer.elementAccess(element.enclosingClass); 941 elementAccess = namer.elementAccess(element.enclosingClass);
938 getterName = namer.getterName(element); 942 getterName = namer.getterName(element);
939 setterName = namer.setterName(element); 943 setterName = namer.setterName(element);
940 } 944 }
941 945
942 FieldElementX apply() { 946 FieldElementX apply() {
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
978 982
979 PartialFunctionElement get after => element; 983 PartialFunctionElement get after => element;
980 984
981 PartialFunctionElement apply() { 985 PartialFunctionElement apply() {
982 Element enclosing = container; 986 Element enclosing = container;
983 if (enclosing.isLibrary) { 987 if (enclosing.isLibrary) {
984 // TODO(ahe): Reuse compilation unit of element instead? 988 // TODO(ahe): Reuse compilation unit of element instead?
985 enclosing = enclosing.compilationUnit; 989 enclosing = enclosing.compilationUnit;
986 } 990 }
987 PartialFunctionElement copy = element.copyWithEnclosing(enclosing); 991 PartialFunctionElement copy = element.copyWithEnclosing(enclosing);
988 container.addMember(copy, compiler); 992 NO_WARN(container).addMember(copy, compiler);
989 return copy; 993 return copy;
990 } 994 }
991 } 995 }
992 996
993 class AddedClassUpdate extends Update with JsFeatures { 997 class AddedClassUpdate extends Update with JsFeatures {
994 final PartialClassElement element; 998 final PartialClassElement element;
995 999
996 final LibraryElementX library; 1000 final LibraryElementX library;
997 1001
998 AddedClassUpdate(Compiler compiler, this.element, this.library) 1002 AddedClassUpdate(Compiler compiler, this.element, this.library)
(...skipping 19 matching lines...) Expand all
1018 1022
1019 AddedFieldUpdate(Compiler compiler, this.element, this.container) 1023 AddedFieldUpdate(Compiler compiler, this.element, this.container)
1020 : super(compiler); 1024 : super(compiler);
1021 1025
1022 PartialFieldList get before => null; 1026 PartialFieldList get before => null;
1023 1027
1024 PartialFieldList get after => element.declarationSite; 1028 PartialFieldList get after => element.declarationSite;
1025 1029
1026 FieldElementX apply() { 1030 FieldElementX apply() {
1027 FieldElementX copy = element.copyWithEnclosing(container); 1031 FieldElementX copy = element.copyWithEnclosing(container);
1028 container.addMember(copy, compiler); 1032 NO_WARN(container).addMember(copy, compiler);
1029 return copy; 1033 return copy;
1030 } 1034 }
1031 } 1035 }
1032 1036
1033 1037
1034 class ClassUpdate extends Update with JsFeatures { 1038 class ClassUpdate extends Update with JsFeatures {
1035 final PartialClassElement before; 1039 final PartialClassElement before;
1036 1040
1037 final PartialClassElement after; 1041 final PartialClassElement after;
1038 1042
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
1158 1162
1159 ClassEmitter get classEmitter => backend.emitter.oldEmitter.classEmitter; 1163 ClassEmitter get classEmitter => backend.emitter.oldEmitter.classEmitter;
1160 1164
1161 List<String> computeFields(ClassElement cls) { 1165 List<String> computeFields(ClassElement cls) {
1162 // TODO(ahe): Rewrite for new emitter. 1166 // TODO(ahe): Rewrite for new emitter.
1163 ClassBuilder builder = new ClassBuilder(cls, namer); 1167 ClassBuilder builder = new ClassBuilder(cls, namer);
1164 classEmitter.emitFields(cls, builder, ""); 1168 classEmitter.emitFields(cls, builder, "");
1165 return builder.fields; 1169 return builder.fields;
1166 } 1170 }
1167 } 1171 }
1172
1173 // TODO(ahe): Remove this method.
1174 NO_WARN(x) => x;
OLDNEW
« no previous file with comments | « dart/pkg/dart2js_incremental/lib/dart2js_incremental.dart ('k') | dart/site/try/poi/poi.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698