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

Side by Side Diff: pkg/fletchc/lib/incremental/library_updater.dart

Issue 1170123004: Rename CompiledFunction to FletchFunctionBuilder and CompiledClass to FletchClassBuilder. (Closed) Base URL: git@github.com:dart-lang/fletch.git@master
Patch Set: Created 5 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
« no previous file with comments | « pkg/fletchc/lib/compiler.dart ('k') | pkg/fletchc/lib/src/closure_environment.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 fletchc_incremental.library_updater; 5 library fletchc_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 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 FunctionExpression, 53 FunctionExpression,
54 LibraryTag, 54 LibraryTag,
55 NodeList, 55 NodeList,
56 Part, 56 Part,
57 StringNode, 57 StringNode,
58 unparse; 58 unparse;
59 59
60 import '../src/fletch_backend.dart' show 60 import '../src/fletch_backend.dart' show
61 FletchBackend; 61 FletchBackend;
62 62
63 import '../src/compiled_class.dart' show 63 import '../src/fletch_class_builder.dart' show
64 CompiledClass; 64 FletchClassBuilder;
65 65
66 import '../commands.dart' show 66 import '../commands.dart' show
67 Command, 67 Command,
68 MapId; 68 MapId;
69 69
70 import '../commands.dart' as commands_lib; 70 import '../commands.dart' as commands_lib;
71 71
72 import 'package:compiler/src/util/util.dart' show 72 import 'package:compiler/src/util/util.dart' show
73 Link, 73 Link,
74 LinkBuilder; 74 LinkBuilder;
(...skipping 16 matching lines...) Expand all
91 TagState; 91 TagState;
92 92
93 import 'diff.dart' show 93 import 'diff.dart' show
94 Difference, 94 Difference,
95 computeDifference; 95 computeDifference;
96 96
97 import 'fletchc_incremental.dart' show 97 import 'fletchc_incremental.dart' show
98 IncrementalCompilationFailed, 98 IncrementalCompilationFailed,
99 IncrementalCompiler; 99 IncrementalCompiler;
100 100
101 import '../src/compiled_function.dart' show 101 import '../src/fletch_function_builder.dart' show
102 CompiledFunction; 102 FletchFunctionBuilder;
103 103
104 typedef void Logger(message); 104 typedef void Logger(message);
105 105
106 typedef bool Reuser( 106 typedef bool Reuser(
107 Token diffToken, 107 Token diffToken,
108 PartialElement before, 108 PartialElement before,
109 PartialElement after); 109 PartialElement after);
110 110
111 class FailedUpdate { 111 class FailedUpdate {
112 /// Either an [Element] or a [Difference]. 112 /// Either an [Element] or a [Difference].
(...skipping 742 matching lines...) Expand 10 before | Expand all | Expand 10 after
855 updates.add(new commands_lib.PopToMap(MapId.constants, id)); 855 updates.add(new commands_lib.PopToMap(MapId.constants, id));
856 } 856 }
857 }); 857 });
858 858
859 for (Function action in deferredActions) { 859 for (Function action in deferredActions) {
860 action(); 860 action();
861 changes++; 861 changes++;
862 } 862 }
863 863
864 for (ClassElementX element in _classesWithSchemaChanges) { 864 for (ClassElementX element in _classesWithSchemaChanges) {
865 CompiledClass compiledClass = backend.compiledClasses[element]; 865 FletchClassBuilder classBuilder = backend.classBuilders[element];
866 int id = compiledClass.id; 866 int id = classBuilder.id;
867 updates.add(new commands_lib.PushFromMap(MapId.classes, id)); 867 updates.add(new commands_lib.PushFromMap(MapId.classes, id));
868 868
869 compiledClass.createImplicitAccessors(backend); 869 classBuilder.createImplicitAccessors(backend);
870 Map<int, int> methodTable = compiledClass.computeMethodTable(backend); 870 Map<int, int> methodTable = classBuilder.computeMethodTable(backend);
871 871
872 methodTable.forEach((int selector, int methodId) { 872 methodTable.forEach((int selector, int methodId) {
873 updates.add(new commands_lib.PushNewInteger(selector)); 873 updates.add(new commands_lib.PushNewInteger(selector));
874 updates.add(new commands_lib.PushFromMap(MapId.methods, methodId)); 874 updates.add(new commands_lib.PushFromMap(MapId.methods, methodId));
875 }); 875 });
876 876
877 updates.add(new commands_lib.ChangeMethodTable(methodTable.length)); 877 updates.add(new commands_lib.ChangeMethodTable(methodTable.length));
878 changes++; 878 changes++;
879 } 879 }
880 880
881 for (ClassElementX element in _classesWithSchemaChanges) { 881 for (ClassElementX element in _classesWithSchemaChanges) {
882 computeSchemaChange(element, beforeFields[element], updates); 882 computeSchemaChange(element, beforeFields[element], updates);
883 changes++; 883 changes++;
884 } 884 }
885 885
886 updates.add(new commands_lib.CommitChanges(changes)); 886 updates.add(new commands_lib.CommitChanges(changes));
887 887
888 return updates; 888 return updates;
889 } 889 }
890 890
891 void computeFieldUpdateFletch(FieldElementX element, List<Command> commands) { 891 void computeFieldUpdateFletch(FieldElementX element, List<Command> commands) {
892 throw new IncrementalCompilationFailed("Not implemented yet."); 892 throw new IncrementalCompilationFailed("Not implemented yet.");
893 } 893 }
894 894
895 void computeMethodUpdateFletch(Element element, List<Command> commands) { 895 void computeMethodUpdateFletch(Element element, List<Command> commands) {
896 CompiledFunction function = lookupCompiledFunction(element); 896 FletchFunctionBuilder function = lookupFletchFunctionBuilder(element);
897 backend.pushNewFunction(function, commands, deferredActions); 897 backend.pushNewFunction(function, commands, deferredActions);
898 if (element == backend.context.compiler.mainFunction) { 898 if (element == backend.context.compiler.mainFunction) {
899 deferredActions.add(() { 899 deferredActions.add(() {
900 CompiledFunction callMain = 900 FletchFunctionBuilder callMain =
901 lookupCompiledFunction( 901 lookupFletchFunctionBuilder(
902 backend.fletchSystemLibrary.findLocal('callMain')); 902 backend.fletchSystemLibrary.findLocal('callMain'));
903 commands.add( 903 commands.add(
904 new commands_lib.PushFromMap(MapId.methods, callMain.methodId)); 904 new commands_lib.PushFromMap(MapId.methods, callMain.methodId));
905 commands.add( 905 commands.add(
906 new commands_lib.PushFromMap(MapId.methods, function.methodId)); 906 new commands_lib.PushFromMap(MapId.methods, function.methodId));
907 commands.add(new commands_lib.ChangeMethodLiteral(0)); 907 commands.add(new commands_lib.ChangeMethodLiteral(0));
908 }); 908 });
909 } 909 }
910 } 910 }
911 911
912 void computeSchemaChange(ClassElementX element, 912 void computeSchemaChange(ClassElementX element,
913 Map<FieldElementX, int> beforeFields, 913 Map<FieldElementX, int> beforeFields,
914 List<Command> commands) { 914 List<Command> commands) {
915 CompiledClass compiledClass = backend.compiledClasses[element]; 915 FletchClassBuilder classBuilder = backend.classBuilders[element];
916 916
917 // Collect the list of fields as they should exist after the transformation. 917 // Collect the list of fields as they should exist after the transformation.
918 List<FieldElementX> afterFields = []; 918 List<FieldElementX> afterFields = [];
919 forEachField(element, (field) { 919 forEachField(element, (field) {
920 afterFields.add(field); 920 afterFields.add(field);
921 }); 921 });
922 922
923 // First, we push all the classes we want to change the schema of. This 923 // First, we push all the classes we want to change the schema of. This
924 // includes all subclasses. 924 // includes all subclasses.
925 int numberOfClasses = 0; 925 int numberOfClasses = 0;
926 Queue<ClassElementX> workQueue = new Queue<ClassElementX>()..add(element); 926 Queue<ClassElementX> workQueue = new Queue<ClassElementX>()..add(element);
927 while (workQueue.isNotEmpty) { 927 while (workQueue.isNotEmpty) {
928 ClassElementX current = workQueue.removeFirst(); 928 ClassElementX current = workQueue.removeFirst();
929 int id = backend.compiledClasses[current].id; 929 int id = backend.classBuilders[current].id;
930 commands.add(new commands_lib.PushFromMap(MapId.classes, id)); 930 commands.add(new commands_lib.PushFromMap(MapId.classes, id));
931 numberOfClasses++; 931 numberOfClasses++;
932 // Add all subclasses that aren't schema change target themselves to 932 // Add all subclasses that aren't schema change target themselves to
933 // the work queue. 933 // the work queue.
934 for (ClassElementX subclass in backend.directSubclasses[current]) { 934 for (ClassElementX subclass in backend.directSubclasses[current]) {
935 if (!_classesWithSchemaChanges.contains(subclass)) { 935 if (!_classesWithSchemaChanges.contains(subclass)) {
936 workQueue.add(subclass); 936 workQueue.add(subclass);
937 } 937 }
938 } 938 }
939 } 939 }
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
1145 1145
1146 throw new IncrementalCompilationFailed("Not implemented yet."); 1146 throw new IncrementalCompilationFailed("Not implemented yet.");
1147 } 1147 }
1148 } 1148 }
1149 1149
1150 class RemovedFieldUpdate extends RemovalUpdate with FletchFeatures { 1150 class RemovedFieldUpdate extends RemovalUpdate with FletchFeatures {
1151 final FieldElementX element; 1151 final FieldElementX element;
1152 1152
1153 bool wasStateCaptured = false; 1153 bool wasStateCaptured = false;
1154 1154
1155 CompiledClass beforeCompiledClass; 1155 FletchClassBuilder beforeFletchClassBuilder;
1156 Map<FieldElement, int> beforeFields; 1156 Map<FieldElement, int> beforeFields;
1157 1157
1158 RemovedFieldUpdate(Compiler compiler, this.element) 1158 RemovedFieldUpdate(Compiler compiler, this.element)
1159 : super(compiler); 1159 : super(compiler);
1160 1160
1161 PartialFieldList get before => element.declarationSite; 1161 PartialFieldList get before => element.declarationSite;
1162 1162
1163 PartialFieldList get after => null; 1163 PartialFieldList get after => null;
1164 1164
1165 void captureState() { 1165 void captureState() {
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
1369 return element is ElementX ? element.declarationSite : null; 1369 return element is ElementX ? element.declarationSite : null;
1370 } 1370 }
1371 1371
1372 abstract class FletchFeatures { 1372 abstract class FletchFeatures {
1373 Compiler get compiler; 1373 Compiler get compiler;
1374 1374
1375 FletchBackend get backend => compiler.backend; 1375 FletchBackend get backend => compiler.backend;
1376 1376
1377 EnqueueTask get enqueuer => compiler.enqueuer; 1377 EnqueueTask get enqueuer => compiler.enqueuer;
1378 1378
1379 CompiledFunction lookupCompiledFunction(FunctionElement function) { 1379 FletchFunctionBuilder lookupFletchFunctionBuilder(FunctionElement function) {
1380 return backend.compiledFunctions[function]; 1380 return backend.functionBuilders[function];
1381 } 1381 }
1382 } 1382 }
1383 1383
1384 // TODO(ahe): Remove this method. 1384 // TODO(ahe): Remove this method.
1385 NO_WARN(x) => x; 1385 NO_WARN(x) => x;
OLDNEW
« no previous file with comments | « pkg/fletchc/lib/compiler.dart ('k') | pkg/fletchc/lib/src/closure_environment.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698