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

Unified Diff: runtime/vm/flow_graph_builder.cc

Issue 11029002: Revert r13022 (revert inlining of methods with control flow), Review URL: https://codereview.chromi… (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 3 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_builder.h ('k') | runtime/vm/flow_graph_inliner.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/flow_graph_builder.cc
===================================================================
--- runtime/vm/flow_graph_builder.cc (revision 13077)
+++ runtime/vm/flow_graph_builder.cc (working copy)
@@ -26,6 +26,8 @@
DEFINE_FLAG(bool, print_flow_graph, false, "Print the IR flow graph.");
DEFINE_FLAG(bool, trace_type_check_elimination, false,
"Trace type check elimination at compile time.");
+DEFINE_FLAG(bool, inline_control_flow, false,
+ "Inline functions with control flow.");
DECLARE_FLAG(bool, enable_type_checks);
@@ -1093,7 +1095,6 @@
// Note: The specification of switch/case is under discussion and may change
// drastically.
void EffectGraphVisitor::VisitCaseNode(CaseNode* node) {
- InlineBailout("EffectGraphVisitor::VisitCaseNode (control)");
const intptr_t len = node->case_expressions()->length();
// Create case statements instructions.
EffectGraphVisitor for_case_statements(owner(), temp_index());
@@ -1189,7 +1190,6 @@
// f) loop-exit-target
// g) break-join (optional)
void EffectGraphVisitor::VisitWhileNode(WhileNode* node) {
- InlineBailout("EffectGraphVisitor::VisitWhileNode (control)");
TestGraphVisitor for_test(owner(),
temp_index(),
node->condition()->token_pos());
@@ -1227,7 +1227,6 @@
// f) loop-exit-target
// g) break-join
void EffectGraphVisitor::VisitDoWhileNode(DoWhileNode* node) {
- InlineBailout("EffectGraphVisitor::VisitDoWhileNode (control)");
// Traverse body first in order to generate continue and break labels.
EffectGraphVisitor for_body(owner(), temp_index());
for_body.AddInstruction(
@@ -1282,7 +1281,6 @@
// h) loop-exit-target
// i) break-join
void EffectGraphVisitor::VisitForNode(ForNode* node) {
- InlineBailout("EffectGraphVisitor::VisitForNode (control)");
EffectGraphVisitor for_initializer(owner(), temp_index());
node->initializer()->Visit(&for_initializer);
Append(for_initializer);
@@ -1356,7 +1354,6 @@
void EffectGraphVisitor::VisitJumpNode(JumpNode* node) {
- InlineBailout("EffectGraphVisitor::VisitJumpNode (control)");
for (intptr_t i = 0; i < node->inlined_finally_list_length(); i++) {
EffectGraphVisitor for_effect(owner(), temp_index());
node->InlinedFinallyNodeAt(i)->Visit(&for_effect);
@@ -2636,7 +2633,7 @@
AppendFragment(normal_entry, for_effect);
// Check that the graph is properly terminated.
ASSERT(!for_effect.is_open());
- FlowGraph* graph = new FlowGraph(*this, graph_entry_);
+ FlowGraph* graph = new FlowGraph(*this, graph_entry_, last_used_block_id_);
if (InInliningContext()) graph->set_exits(exits_);
return graph;
}
« no previous file with comments | « runtime/vm/flow_graph_builder.h ('k') | runtime/vm/flow_graph_inliner.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698