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

Side by Side Diff: sdk/lib/_internal/compiler/implementation/compiler.dart

Issue 11416280: Decouple the constant handler from the compiler so we can have more than one. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 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) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 part of dart2js; 5 part of dart2js;
6 6
7 /** 7 /**
8 * If true, print a warning for each method that was resolved, but not 8 * If true, print a warning for each method that was resolved, but not
9 * compiled. 9 * compiled.
10 */ 10 */
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 ParserTask parser; 182 ParserTask parser;
183 PatchParserTask patchParser; 183 PatchParserTask patchParser;
184 LibraryLoader libraryLoader; 184 LibraryLoader libraryLoader;
185 TreeValidatorTask validator; 185 TreeValidatorTask validator;
186 ResolverTask resolver; 186 ResolverTask resolver;
187 closureMapping.ClosureTask closureToClassMapper; 187 closureMapping.ClosureTask closureToClassMapper;
188 TypeCheckerTask checker; 188 TypeCheckerTask checker;
189 ti.TypesTask typesTask; 189 ti.TypesTask typesTask;
190 Backend backend; 190 Backend backend;
191 ConstantHandler constantHandler; 191 ConstantHandler constantHandler;
192 ConstantHandler metadataHandler;
192 EnqueueTask enqueuer; 193 EnqueueTask enqueuer;
193 194
194 static const SourceString MAIN = const SourceString('main'); 195 static const SourceString MAIN = const SourceString('main');
195 static const SourceString CALL_OPERATOR_NAME = const SourceString('call'); 196 static const SourceString CALL_OPERATOR_NAME = const SourceString('call');
196 static const SourceString NO_SUCH_METHOD = const SourceString('noSuchMethod'); 197 static const SourceString NO_SUCH_METHOD = const SourceString('noSuchMethod');
197 static const int NO_SUCH_METHOD_ARG_COUNT = 1; 198 static const int NO_SUCH_METHOD_ARG_COUNT = 1;
198 static const SourceString INVOKE_ON = const SourceString('invokeOn'); 199 static const SourceString INVOKE_ON = const SourceString('invokeOn');
199 static const SourceString RUNTIME_TYPE = const SourceString('runtimeType'); 200 static const SourceString RUNTIME_TYPE = const SourceString('runtimeType');
200 static const SourceString START_ROOT_ISOLATE = 201 static const SourceString START_ROOT_ISOLATE =
201 const SourceString('startRootIsolate'); 202 const SourceString('startRootIsolate');
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 resolver = new ResolverTask(this); 242 resolver = new ResolverTask(this);
242 closureToClassMapper = new closureMapping.ClosureTask(this); 243 closureToClassMapper = new closureMapping.ClosureTask(this);
243 checker = new TypeCheckerTask(this); 244 checker = new TypeCheckerTask(this);
244 typesTask = new ti.TypesTask(this, enableConcreteTypeInference); 245 typesTask = new ti.TypesTask(this, enableConcreteTypeInference);
245 backend = emitJavaScript ? 246 backend = emitJavaScript ?
246 new js_backend.JavaScriptBackend(this, 247 new js_backend.JavaScriptBackend(this,
247 generateSourceMap, 248 generateSourceMap,
248 disallowUnsafeEval) : 249 disallowUnsafeEval) :
249 new dart_backend.DartBackend(this, strips); 250 new dart_backend.DartBackend(this, strips);
250 constantHandler = new ConstantHandler(this, backend.constantSystem); 251 constantHandler = new ConstantHandler(this, backend.constantSystem);
252 metadataHandler = new ConstantHandler(this, backend.constantSystem);
251 enqueuer = new EnqueueTask(this); 253 enqueuer = new EnqueueTask(this);
252 tasks = [scanner, dietParser, parser, patchParser, libraryLoader, 254 tasks = [scanner, dietParser, parser, patchParser, libraryLoader,
253 resolver, closureToClassMapper, checker, typesTask, 255 resolver, closureToClassMapper, checker, typesTask,
254 constantHandler, enqueuer]; 256 constantHandler, enqueuer];
255 tasks.addAll(backend.tasks); 257 tasks.addAll(backend.tasks);
256 } 258 }
257 259
258 Universe get resolverWorld => enqueuer.resolution.universe; 260 Universe get resolverWorld => enqueuer.resolution.universe;
259 Universe get codegenWorld => enqueuer.codegen.universe; 261 Universe get codegenWorld => enqueuer.codegen.universe;
260 262
(...skipping 456 matching lines...) Expand 10 before | Expand all | Expand 10 after
717 withCurrentElement(element, 719 withCurrentElement(element,
718 () => resolver.resolveTypedef(element)); 720 () => resolver.resolveTypedef(element));
719 } 721 }
720 722
721 FunctionType computeFunctionType(Element element, 723 FunctionType computeFunctionType(Element element,
722 FunctionSignature signature) { 724 FunctionSignature signature) {
723 return withCurrentElement(element, 725 return withCurrentElement(element,
724 () => resolver.computeFunctionType(element, signature)); 726 () => resolver.computeFunctionType(element, signature));
725 } 727 }
726 728
727 bool isLazilyInitialized(VariableElement element) {
728 Constant initialValue = compileVariable(element);
729 return initialValue == null;
730 }
731
732 /**
733 * Compiles compile-time constants. Never returns [:null:].
734 * If the initial value is not a compile-time constants reports an error.
735 */
736 Constant compileConstant(VariableElement element) {
737 return withCurrentElement(element, () {
738 return constantHandler.compileConstant(element);
739 });
740 }
741
742 Constant compileVariable(VariableElement element) {
743 return withCurrentElement(element, () {
744 return constantHandler.compileVariable(element);
745 });
746 }
747
748 reportWarning(Node node, var message) { 729 reportWarning(Node node, var message) {
749 if (message is TypeWarning) { 730 if (message is TypeWarning) {
750 // TODO(ahe): Don't supress these warning when the type checker 731 // TODO(ahe): Don't supress these warning when the type checker
751 // is more complete. 732 // is more complete.
752 if (identical(message.message.kind, MessageKind.NOT_ASSIGNABLE)) return; 733 if (identical(message.message.kind, MessageKind.NOT_ASSIGNABLE)) return;
753 if (identical(message.message.kind, MessageKind.MISSING_RETURN)) return; 734 if (identical(message.message.kind, MessageKind.MISSING_RETURN)) return;
754 if (identical(message.message.kind, MessageKind.MAYBE_MISSING_RETURN)) ret urn; 735 if (identical(message.message.kind, MessageKind.MAYBE_MISSING_RETURN)) ret urn;
755 if (identical(message.message.kind, MessageKind.ADDITIONAL_ARGUMENT)) retu rn; 736 if (identical(message.message.kind, MessageKind.ADDITIONAL_ARGUMENT)) retu rn;
756 if (identical(message.message.kind, MessageKind.METHOD_NOT_FOUND)) return; 737 if (identical(message.message.kind, MessageKind.METHOD_NOT_FOUND)) return;
757 } 738 }
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
944 // TODO(johnniwinther): Use [spannable] and [message] to provide better 925 // TODO(johnniwinther): Use [spannable] and [message] to provide better
945 // information on assertion errors. 926 // information on assertion errors.
946 if (condition is Function){ 927 if (condition is Function){
947 condition = condition(); 928 condition = condition();
948 } 929 }
949 if (spannable == null || !condition) { 930 if (spannable == null || !condition) {
950 throw new SpannableAssertionFailure(spannable, message); 931 throw new SpannableAssertionFailure(spannable, message);
951 } 932 }
952 return true; 933 return true;
953 } 934 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698