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

Unified Diff: dart/sdk/lib/_internal/compiler/implementation/compile_time_constants.dart

Issue 12525007: Record dependency information to implement first version of dependency (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Rebased Created 7 years, 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | dart/sdk/lib/_internal/compiler/implementation/compiler.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: dart/sdk/lib/_internal/compiler/implementation/compile_time_constants.dart
diff --git a/dart/sdk/lib/_internal/compiler/implementation/compile_time_constants.dart b/dart/sdk/lib/_internal/compiler/implementation/compile_time_constants.dart
index a532fe0136d9de9a842dfd3b2bb3f1afe9629a68..ca8e7b43e95a5f16b5327d3deb10ac6465a1f007 100644
--- a/dart/sdk/lib/_internal/compiler/implementation/compile_time_constants.dart
+++ b/dart/sdk/lib/_internal/compiler/implementation/compile_time_constants.dart
@@ -42,22 +42,22 @@ class ConstantHandler extends CompilerTask {
String get name => 'ConstantHandler';
- void registerCompileTimeConstant(Constant constant) {
- registerInstantiatedClass(constant.computeType(compiler).element);
+ void registerCompileTimeConstant(Constant constant, TreeElements elements) {
+ registerInstantiatedClass(constant.computeType(compiler).element, elements);
if (constant.isFunction()) {
FunctionConstant function = constant;
registerGetOfStaticFunction(function.element);
} else if (constant.isInterceptor()) {
// An interceptor constant references the class's prototype chain.
InterceptorConstant interceptor = constant;
- registerInstantiatedClass(interceptor.dispatchedType.element);
+ registerInstantiatedClass(interceptor.dispatchedType.element, elements);
}
compiledConstants.add(constant);
}
- void registerInstantiatedClass(ClassElement element) {
+ void registerInstantiatedClass(ClassElement element, TreeElements elements) {
if (isMetadata) return;
- compiler.enqueuer.codegen.registerInstantiatedClass(element);
+ compiler.enqueuer.codegen.registerInstantiatedClass(element, elements);
}
void registerStaticUse(Element element) {
@@ -70,8 +70,8 @@ class ConstantHandler extends CompilerTask {
compiler.enqueuer.codegen.registerGetOfStaticFunction(element);
}
- void registerStringInstance() {
- registerInstantiatedClass(compiler.stringClass);
+ void registerStringInstance(TreeElements elements) {
+ registerInstantiatedClass(compiler.stringClass, elements);
}
void registerCreateRuntimeTypeFunction() {
@@ -316,17 +316,17 @@ class CompileTimeConstantEvaluator extends Visitor {
}
Constant visitLiteralBool(LiteralBool node) {
- handler.registerInstantiatedClass(compiler.boolClass);
+ handler.registerInstantiatedClass(compiler.boolClass, elements);
return constantSystem.createBool(node.value);
}
Constant visitLiteralDouble(LiteralDouble node) {
- handler.registerInstantiatedClass(compiler.doubleClass);
+ handler.registerInstantiatedClass(compiler.doubleClass, elements);
return constantSystem.createDouble(node.value);
}
Constant visitLiteralInt(LiteralInt node) {
- handler.registerInstantiatedClass(compiler.intClass);
+ handler.registerInstantiatedClass(compiler.intClass, elements);
return constantSystem.createInt(node.value);
}
@@ -344,7 +344,7 @@ class CompileTimeConstantEvaluator extends Visitor {
compiler.listClass.computeType(compiler);
DartType type = compiler.listClass.rawType;
Constant constant = new ListConstant(type, arguments);
- handler.registerCompileTimeConstant(constant);
+ handler.registerCompileTimeConstant(constant, elements);
return constant;
}
@@ -381,7 +381,7 @@ class CompileTimeConstantEvaluator extends Visitor {
compiler.listClass.computeType(compiler);
DartType keysType = compiler.listClass.rawType;
ListConstant keysList = new ListConstant(keysType, keys);
- handler.registerCompileTimeConstant(keysList);
+ handler.registerCompileTimeConstant(keysList, elements);
SourceString className = hasProtoKey
? MapConstant.DART_PROTO_CLASS
: MapConstant.DART_CLASS;
@@ -389,9 +389,9 @@ class CompileTimeConstantEvaluator extends Visitor {
classElement.ensureResolved(compiler);
// TODO(floitsch): copy over the generic type.
DartType type = classElement.rawType;
- handler.registerInstantiatedClass(classElement);
+ handler.registerInstantiatedClass(classElement, elements);
Constant constant = new MapConstant(type, keysList, values, protoValue);
- handler.registerCompileTimeConstant(constant);
+ handler.registerCompileTimeConstant(constant, elements);
return constant;
}
@@ -400,7 +400,7 @@ class CompileTimeConstantEvaluator extends Visitor {
}
Constant visitLiteralString(LiteralString node) {
- handler.registerStringInstance();
+ handler.registerStringInstance(elements);
return constantSystem.createString(node.dartString, node);
}
@@ -408,7 +408,7 @@ class CompileTimeConstantEvaluator extends Visitor {
StringConstant left = evaluate(node.first);
StringConstant right = evaluate(node.second);
if (left == null || right == null) return null;
- handler.registerStringInstance();
+ handler.registerStringInstance(elements);
return constantSystem.createString(
new DartString.concat(left.value, right.value), node);
}
@@ -436,7 +436,7 @@ class CompileTimeConstantEvaluator extends Visitor {
if (partString == null) return null;
accumulator = new DartString.concat(accumulator, partString.value);
};
- handler.registerStringInstance();
+ handler.registerStringInstance(elements);
return constantSystem.createString(accumulator, node);
}
@@ -448,7 +448,7 @@ class CompileTimeConstantEvaluator extends Visitor {
// constant emitter will generate a call to the createRuntimeType
// helper so we register a use of that.
handler.registerCreateRuntimeTypeFunction();
- handler.registerCompileTimeConstant(constant);
+ handler.registerCompileTimeConstant(constant, elements);
return constant;
}
@@ -458,7 +458,7 @@ class CompileTimeConstantEvaluator extends Visitor {
if (send.isPropertyAccess) {
if (Elements.isStaticOrTopLevelFunction(element)) {
Constant constant = new FunctionConstant(element);
- handler.registerCompileTimeConstant(constant);
+ handler.registerCompileTimeConstant(constant, elements);
return constant;
} else if (Elements.isStaticOrTopLevelField(element)) {
Constant result;
@@ -664,12 +664,12 @@ class CompileTimeConstantEvaluator extends Visitor {
evaluator.evaluateConstructorFieldValues(arguments);
List<Constant> jsNewArguments = evaluator.buildJsNewArguments(classElement);
- handler.registerInstantiatedClass(classElement);
+ handler.registerInstantiatedClass(classElement, elements);
// TODO(floitsch): take generic types into account.
classElement.computeType(compiler);
DartType type = classElement.rawType;
Constant constant = new ConstructedConstant(type, jsNewArguments);
- handler.registerCompileTimeConstant(constant);
+ handler.registerCompileTimeConstant(constant, elements);
return constant;
}
« no previous file with comments | « no previous file | dart/sdk/lib/_internal/compiler/implementation/compiler.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698