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

Unified Diff: runtime/vm/flow_graph_builder.cc

Issue 10967007: Inlining functions with control flow. (Closed) Base URL: https://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
Index: runtime/vm/flow_graph_builder.cc
diff --git a/runtime/vm/flow_graph_builder.cc b/runtime/vm/flow_graph_builder.cc
index 490ce83bf0efe8a1b57b5a81ea30c26ced271569..d6bb3e49c257576209825e336e12af3d73b3889c 100644
--- a/runtime/vm/flow_graph_builder.cc
+++ b/runtime/vm/flow_graph_builder.cc
@@ -1092,7 +1092,6 @@ void EffectGraphVisitor::VisitSwitchNode(SwitchNode* node) {
// 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());
@@ -1188,7 +1187,6 @@ void EffectGraphVisitor::VisitCaseNode(CaseNode* node) {
// 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());
@@ -1226,7 +1224,6 @@ void EffectGraphVisitor::VisitWhileNode(WhileNode* node) {
// 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(
@@ -1281,7 +1278,6 @@ void EffectGraphVisitor::VisitDoWhileNode(DoWhileNode* node) {
// 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);
@@ -1355,7 +1351,6 @@ void EffectGraphVisitor::VisitForNode(ForNode* node) {
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);
@@ -2635,7 +2630,7 @@ FlowGraph* FlowGraphBuilder::BuildGraph(InliningContext context) {
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;
}

Powered by Google App Engine
This is Rietveld 408576698