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

Side by Side Diff: frog/leg/compiler.dart

Issue 8769012: Start resolving classes and default constructors. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: '' Created 9 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
OLDNEW
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, 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 class Compiler implements Canceler, Logger { 5 class Compiler implements Canceler, Logger {
6 final Script script; 6 final Script script;
7 Queue<Element> worklist; 7 Queue<Element> worklist;
8 Universe universe; 8 Universe universe;
9 String generatedCode; 9 String generatedCode;
10 10
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 while (!worklist.isEmpty()) { 85 while (!worklist.isEmpty()) {
86 compileMethod(worklist.removeLast()); 86 compileMethod(worklist.removeLast());
87 } 87 }
88 generatedCode = assembleProgram(); 88 generatedCode = assembleProgram();
89 } 89 }
90 90
91 String compileMethod(Element element) { 91 String compileMethod(Element element) {
92 String code = universe.generatedCode[element]; 92 String code = universe.generatedCode[element];
93 if (code !== null) return code; 93 if (code !== null) return code;
94 Node tree = parser.parse(element); 94 Node tree = parser.parse(element);
95 TreeElements elements = resolver.resolve(tree); 95 TreeElements elements = resolver.resolve(tree, element);
96 checker.check(tree, elements); 96 checker.check(tree, elements);
97 HGraph graph = builder.build(tree, elements); 97 HGraph graph = builder.build(tree, elements);
98 optimizer.optimize(graph); 98 optimizer.optimize(graph);
99 code = generator.generate(element, graph); 99 code = generator.generate(element, graph);
100 universe.addGeneratedCode(element, code); 100 universe.addGeneratedCode(element, code);
101 return code; 101 return code;
102 } 102 }
103 103
104 Element resolveType(ClassElement element) { 104 Element resolveType(ClassElement element) {
105 resolver.resolveType(parser.parse(element)); 105 resolver.resolveType(parser.parse(element), element);
106 } 106 }
107 107
108 Element resolveSignature(FunctionElement element) { 108 Element resolveSignature(FunctionElement element) {
109 resolver.resolveSignature(parser.parse(element)); 109 resolver.resolveSignature(parser.parse(element), element);
110 } 110 }
111 111
112 String assembleProgram() { 112 String assembleProgram() {
113 StringBuffer buffer = new StringBuffer(); 113 StringBuffer buffer = new StringBuffer();
114 buffer.add('function Isolate() {};\n\n'); 114 buffer.add('function Isolate() {};\n\n');
115 universe.generatedCode.forEach((Element element, String codeBlock) { 115 universe.generatedCode.forEach((Element element, String codeBlock) {
116 buffer.add('Isolate.prototype.${element.name} = '); 116 buffer.add('Isolate.prototype.${element.name} = ');
117 buffer.add(codeBlock); 117 buffer.add(codeBlock);
118 buffer.add(';\n\n'); 118 buffer.add(';\n\n');
119 }); 119 });
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 154
155 class CompilerCancelledException { 155 class CompilerCancelledException {
156 final String reason; 156 final String reason;
157 CompilerCancelledException(this.reason); 157 CompilerCancelledException(this.reason);
158 158
159 String toString() { 159 String toString() {
160 String banner = 'compiler cancelled'; 160 String banner = 'compiler cancelled';
161 return (reason !== null) ? '$banner: $reason' : '$banner'; 161 return (reason !== null) ? '$banner: $reason' : '$banner';
162 } 162 }
163 } 163 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698