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

Unified Diff: runtime/vm/intermediate_language_dbc.cc

Issue 2587133002: VM: [DBC] Fix lazy deoptimization after calls that return no values. (Closed)
Patch Set: Created 4 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 side-by-side diff with in-line comments
Download patch
Index: runtime/vm/intermediate_language_dbc.cc
diff --git a/runtime/vm/intermediate_language_dbc.cc b/runtime/vm/intermediate_language_dbc.cc
index efe48b14acc0a9ea3baa92dd1a4916a9de08f8fc..60e9e9408436a4e8e767882260152fa23cb782f7 100644
--- a/runtime/vm/intermediate_language_dbc.cc
+++ b/runtime/vm/intermediate_language_dbc.cc
@@ -204,7 +204,7 @@ EMIT_NATIVE_CODE(InstanceOf,
__ InstanceOf(negate_result() ? 1 : 0);
compiler->AddCurrentDescriptor(RawPcDescriptors::kOther, deopt_id(),
token_pos());
- compiler->RecordAfterCall(this);
+ compiler->RecordAfterCall(this, FlowGraphCompiler::kHasResult);
if (compiler->is_optimizing()) {
__ PopLocal(locs()->out(0).reg());
}
@@ -227,7 +227,7 @@ EMIT_NATIVE_CODE(AssertBoolean,
__ AssertBoolean(Isolate::Current()->type_checks() ? 1 : 0);
compiler->AddCurrentDescriptor(RawPcDescriptors::kOther, deopt_id(),
token_pos());
- compiler->RecordAfterCall(this);
+ compiler->RecordAfterCall(this, FlowGraphCompiler::kHasResult);
if (compiler->is_optimizing()) {
__ Drop1();
}
@@ -280,7 +280,7 @@ EMIT_NATIVE_CODE(PolymorphicInstanceCall,
__ StaticCall(instance_call()->ArgumentCount(), argdesc_kidx);
compiler->AddCurrentDescriptor(RawPcDescriptors::kOther, deopt_id(),
instance_call()->token_pos());
- compiler->RecordAfterCall(this);
+ compiler->RecordAfterCall(this, FlowGraphCompiler::kHasResult);
__ PopLocal(locs()->out(0).reg());
}
@@ -301,7 +301,7 @@ EMIT_NATIVE_CODE(CheckStackOverflow,
}
compiler->AddCurrentDescriptor(RawPcDescriptors::kOther, deopt_id(),
token_pos());
- compiler->RecordAfterCall(this);
+ compiler->RecordAfterCall(this, FlowGraphCompiler::kNoResult);
}
@@ -431,7 +431,7 @@ EMIT_NATIVE_CODE(InitStaticField,
} else {
__ InitStaticTOS();
}
- compiler->RecordAfterCall(this);
+ compiler->RecordAfterCall(this, FlowGraphCompiler::kNoResult);
}
@@ -449,7 +449,7 @@ EMIT_NATIVE_CODE(ClosureCall,
const intptr_t argdesc_kidx =
compiler->assembler()->AddConstant(arguments_descriptor);
__ StaticCall(argument_count, argdesc_kidx);
- compiler->RecordAfterCall(this);
+ compiler->RecordAfterCall(this, FlowGraphCompiler::kHasResult);
if (compiler->is_optimizing()) {
__ PopLocal(locs()->out(0).reg());
}
@@ -699,11 +699,11 @@ EMIT_NATIVE_CODE(CreateArray,
__ Push(type_arguments);
__ Push(length);
__ CreateArrayTOS();
- compiler->RecordAfterCall(this);
+ compiler->RecordAfterCall(this, FlowGraphCompiler::kHasResult);
__ PopLocal(out);
} else {
__ CreateArrayTOS();
- compiler->RecordAfterCall(this);
+ compiler->RecordAfterCall(this, FlowGraphCompiler::kHasResult);
}
}
@@ -917,7 +917,7 @@ EMIT_NATIVE_CODE(StringInterpolate,
__ PushConstant(CallFunction());
const intptr_t argdesc_kidx = __ AddConstant(arguments_descriptor);
__ StaticCall(kArgumentCount, argdesc_kidx);
- compiler->RecordAfterCall(this);
+ compiler->RecordAfterCall(this, FlowGraphCompiler::kHasResult);
if (compiler->is_optimizing()) {
__ PopLocal(locs()->out(0).reg());
}
@@ -1176,7 +1176,7 @@ EMIT_NATIVE_CODE(Throw, 0, Location::NoLocation(), LocationSummary::kCall) {
__ Throw(0);
compiler->AddCurrentDescriptor(RawPcDescriptors::kOther, deopt_id(),
token_pos());
- compiler->RecordAfterCall(this);
+ compiler->RecordAfterCall(this, FlowGraphCompiler::kNoResult);
__ Trap();
}
@@ -1186,7 +1186,7 @@ EMIT_NATIVE_CODE(ReThrow, 0, Location::NoLocation(), LocationSummary::kCall) {
__ Throw(1);
compiler->AddCurrentDescriptor(RawPcDescriptors::kOther, deopt_id(),
token_pos());
- compiler->RecordAfterCall(this);
+ compiler->RecordAfterCall(this, FlowGraphCompiler::kNoResult);
__ Trap();
}

Powered by Google App Engine
This is Rietveld 408576698