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

Unified Diff: runtime/vm/precompiler.cc

Issue 2451893002: Revert "Recognize and optimize a.runtimeType == b.runtimeType pattern." (Closed)
Patch Set: Created 4 years, 2 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/precompiler.h ('k') | runtime/vm/symbols.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/precompiler.cc
diff --git a/runtime/vm/precompiler.cc b/runtime/vm/precompiler.cc
index 70e00a2e209d7cd745712f912c3635b80213835d..de1f3536e391dbdd84ff30d999390597e95790ae 100644
--- a/runtime/vm/precompiler.cc
+++ b/runtime/vm/precompiler.cc
@@ -152,11 +152,9 @@ class DartPrecompilationPipeline : public DartCompilationPipeline {
class PrecompileParsedFunctionHelper : public ValueObject {
public:
- PrecompileParsedFunctionHelper(Precompiler* precompiler,
- ParsedFunction* parsed_function,
+ PrecompileParsedFunctionHelper(ParsedFunction* parsed_function,
bool optimized)
- : precompiler_(precompiler),
- parsed_function_(parsed_function),
+ : parsed_function_(parsed_function),
optimized_(optimized),
thread_(Thread::Current()) {
}
@@ -173,7 +171,6 @@ class PrecompileParsedFunctionHelper : public ValueObject {
FlowGraphCompiler* graph_compiler,
FlowGraph* flow_graph);
- Precompiler* precompiler_;
ParsedFunction* parsed_function_;
const bool optimized_;
Thread* const thread_;
@@ -317,8 +314,7 @@ Precompiler::Precompiler(Thread* thread, bool reset_fields) :
types_to_retain_(),
consts_to_retain_(),
field_type_map_(),
- error_(Error::Handle()),
- get_runtime_type_is_unique_(false) {
+ error_(Error::Handle()) {
}
@@ -487,8 +483,9 @@ void Precompiler::PrecompileStaticInitializers() {
void Precompiler::PrecompileConstructors() {
class ConstructorVisitor : public FunctionVisitor {
public:
- explicit ConstructorVisitor(Precompiler* precompiler, Zone* zone)
- : precompiler_(precompiler), zone_(zone) {
+ explicit ConstructorVisitor(Zone* zone, FieldTypeMap* map)
+ : zone_(zone), field_type_map_(map) {
+ ASSERT(map != NULL);
}
void Visit(const Function& function) {
if (!function.IsGenerativeConstructor()) return;
@@ -500,19 +497,18 @@ void Precompiler::PrecompileConstructors() {
if (FLAG_trace_precompiler) {
THR_Print("Precompiling constructor %s\n", function.ToCString());
}
- CompileFunction(precompiler_,
- Thread::Current(),
+ CompileFunction(Thread::Current(),
zone_,
- function);
+ function,
+ field_type_map_);
}
-
private:
- Precompiler* precompiler_;
Zone* zone_;
+ FieldTypeMap* field_type_map_;
};
HANDLESCOPE(T);
- ConstructorVisitor visitor(this, zone_);
+ ConstructorVisitor visitor(zone_, &field_type_map_);
VisitFunctions(&visitor);
FieldTypeMap::Iterator it(field_type_map_.GetIterator());
@@ -800,7 +796,7 @@ void Precompiler::ProcessFunction(const Function& function) {
ASSERT(!function.is_abstract());
ASSERT(!function.IsRedirectingFactory());
- error_ = CompileFunction(this, thread_, zone_, function);
+ error_ = CompileFunction(thread_, zone_, function);
if (!error_.IsNull()) {
Jump(error_);
}
@@ -1138,8 +1134,7 @@ RawFunction* Precompiler::CompileStaticInitializer(const Field& field,
parsed_function->AllocateVariables();
DartPrecompilationPipeline pipeline(zone.GetZone());
- PrecompileParsedFunctionHelper helper(/* precompiler = */ NULL,
- parsed_function,
+ PrecompileParsedFunctionHelper helper(parsed_function,
/* optimized = */ true);
bool success = helper.Compile(&pipeline);
ASSERT(success);
@@ -1240,8 +1235,7 @@ RawObject* Precompiler::ExecuteOnce(SequenceNode* fragment) {
// Non-optimized code generator.
DartPrecompilationPipeline pipeline(Thread::Current()->zone());
- PrecompileParsedFunctionHelper helper(/* precompiler = */ NULL,
- parsed_function,
+ PrecompileParsedFunctionHelper helper(parsed_function,
/* optimized = */ false);
helper.Compile(&pipeline);
Code::Handle(func.unoptimized_code()).set_var_descriptors(
@@ -1517,10 +1511,6 @@ void Precompiler::CollectDynamicFunctionNames() {
}
}
- farray ^= table.GetOrNull(Symbols::GetRuntimeType());
-
- get_runtime_type_is_unique_ = !farray.IsNull() && (farray.Length() == 1);
-
if (FLAG_print_unique_targets) {
UniqueFunctionsSet::Iterator unique_iter(&functions_set);
while (unique_iter.MoveNext()) {
@@ -2829,8 +2819,7 @@ bool PrecompileParsedFunctionHelper::Compile(CompilationPipeline* pipeline) {
caller_inline_id.Add(-1);
CSTAT_TIMER_SCOPE(thread(), graphoptimizer_timer);
- AotOptimizer optimizer(precompiler_,
- flow_graph,
+ AotOptimizer optimizer(flow_graph,
use_speculative_inlining,
&inlining_black_list);
optimizer.PopulateWithICData();
@@ -2872,8 +2861,7 @@ bool PrecompileParsedFunctionHelper::Compile(CompilationPipeline* pipeline) {
&inline_id_to_token_pos,
&caller_inline_id,
use_speculative_inlining,
- &inlining_black_list,
- precompiler_);
+ &inlining_black_list);
inliner.Inline();
// Use lists are maintained and validated by the inliner.
DEBUG_ASSERT(flow_graph->VerifyUseLists());
@@ -3252,8 +3240,7 @@ bool PrecompileParsedFunctionHelper::Compile(CompilationPipeline* pipeline) {
}
-static RawError* PrecompileFunctionHelper(Precompiler* precompiler,
- CompilationPipeline* pipeline,
+static RawError* PrecompileFunctionHelper(CompilationPipeline* pipeline,
const Function& function,
bool optimized) {
// Check that we optimize, except if the function is not optimizable.
@@ -3295,8 +3282,7 @@ static RawError* PrecompileFunctionHelper(Precompiler* precompiler,
num_tokens_after - num_tokens_before);
}
- PrecompileParsedFunctionHelper helper(
- precompiler, parsed_function, optimized);
+ PrecompileParsedFunctionHelper helper(parsed_function, optimized);
const bool success = helper.Compile(pipeline);
if (!success) {
// Encountered error.
@@ -3344,18 +3330,17 @@ static RawError* PrecompileFunctionHelper(Precompiler* precompiler,
}
-RawError* Precompiler::CompileFunction(Precompiler* precompiler,
- Thread* thread,
+RawError* Precompiler::CompileFunction(Thread* thread,
Zone* zone,
- const Function& function) {
+ const Function& function,
+ FieldTypeMap* field_type_map) {
VMTagScope tagScope(thread, VMTag::kCompileUnoptimizedTagId);
TIMELINE_FUNCTION_COMPILATION_DURATION(thread, "CompileFunction", function);
ASSERT(FLAG_precompiled_mode);
const bool optimized = function.IsOptimizable(); // False for natives.
- DartPrecompilationPipeline pipeline(zone,
- (precompiler != NULL) ? precompiler->field_type_map() : NULL);
- return PrecompileFunctionHelper(precompiler, &pipeline, function, optimized);
+ DartPrecompilationPipeline pipeline(zone, field_type_map);
+ return PrecompileFunctionHelper(&pipeline, function, optimized);
}
#endif // DART_PRECOMPILER
« no previous file with comments | « runtime/vm/precompiler.h ('k') | runtime/vm/symbols.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698