| OLD | NEW |
| 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 Loading... |
| 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(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 parser.parse(element); |
| 106 resolver.resolveType(element); |
| 107 return element; |
| 106 } | 108 } |
| 107 | 109 |
| 108 Element resolveSignature(FunctionElement element) { | 110 Element resolveSignature(FunctionElement element) { |
| 109 resolver.resolveSignature(parser.parse(element)); | 111 parser.parse(element); |
| 112 resolver.resolveSignature(element); |
| 113 return element; |
| 110 } | 114 } |
| 111 | 115 |
| 112 String assembleProgram() { | 116 String assembleProgram() { |
| 113 StringBuffer buffer = new StringBuffer(); | 117 StringBuffer buffer = new StringBuffer(); |
| 114 buffer.add('function Isolate() {};\n\n'); | 118 buffer.add('function Isolate() {};\n\n'); |
| 115 universe.generatedCode.forEach((Element element, String codeBlock) { | 119 universe.generatedCode.forEach((Element element, String codeBlock) { |
| 116 buffer.add('Isolate.prototype.${element.name} = '); | 120 buffer.add('Isolate.prototype.${element.name} = '); |
| 117 buffer.add(codeBlock); | 121 buffer.add(codeBlock); |
| 118 buffer.add(';\n\n'); | 122 buffer.add(';\n\n'); |
| 119 }); | 123 }); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 154 | 158 |
| 155 class CompilerCancelledException { | 159 class CompilerCancelledException { |
| 156 final String reason; | 160 final String reason; |
| 157 CompilerCancelledException(this.reason); | 161 CompilerCancelledException(this.reason); |
| 158 | 162 |
| 159 String toString() { | 163 String toString() { |
| 160 String banner = 'compiler cancelled'; | 164 String banner = 'compiler cancelled'; |
| 161 return (reason !== null) ? '$banner: $reason' : '$banner'; | 165 return (reason !== null) ? '$banner: $reason' : '$banner'; |
| 162 } | 166 } |
| 163 } | 167 } |
| OLD | NEW |