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

Unified Diff: runtime/vm/precompiler.h

Issue 1973553003: VM precompiler: Compute and use result type of static initializers of final fields. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: preprocess initializers Created 4 years, 7 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 | « runtime/vm/flow_graph_type_propagator.cc ('k') | runtime/vm/precompiler.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/precompiler.h
diff --git a/runtime/vm/precompiler.h b/runtime/vm/precompiler.h
index d18a9fae29adb1ef8787af39a681ce4560023f4a..6ec2ed3bbb6fe320230a3189c79902f73e794945 100644
--- a/runtime/vm/precompiler.h
+++ b/runtime/vm/precompiler.h
@@ -270,12 +270,13 @@ class Precompiler : public ValueObject {
static RawObject* EvaluateStaticInitializer(const Field& field);
static RawObject* ExecuteOnce(SequenceNode* fragment);
+ static RawFunction* CompileStaticInitializer(const Field& field,
+ bool compute_type);
+
private:
Precompiler(Thread* thread, bool reset_fields);
- static RawFunction* CompileStaticInitializer(const Field& field);
-
void DoCompileAll(Dart_QualifiedFunctionName embedder_entry_points[]);
void ClearAllCode();
void AddRoots(Dart_QualifiedFunctionName embedder_entry_points[]);
@@ -317,13 +318,19 @@ class Precompiler : public ValueObject {
void CollectDynamicFunctionNames();
- class FunctionVisitor : public ValueObject {
+ void PrecompileStaticInitializers();
+
+ template<typename T>
+ class Visitor : public ValueObject {
public:
- virtual ~FunctionVisitor() {}
- virtual void VisitFunction(const Function& function) = 0;
+ virtual ~Visitor() {}
+ virtual void Visit(const T& obj) = 0;
};
+ typedef Visitor<Function> FunctionVisitor;
+ typedef Visitor<Class> ClassVisitor;
void VisitFunctions(FunctionVisitor* visitor);
+ void VisitClasses(ClassVisitor* visitor);
void FinalizeAllClasses();
« no previous file with comments | « runtime/vm/flow_graph_type_propagator.cc ('k') | runtime/vm/precompiler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698