From: jarin@chromium.org Date: Thu, 25 Sep 2014 06:25:10 +0000 (+0000) Subject: Improve memory usage in Turbofan. X-Git-Tag: upstream/4.7.83~6718 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2da3e84ec01454c034f1e53213cdccdc4993176c;p=platform%2Fupstream%2Fv8.git Improve memory usage in Turbofan. BUG= R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/602643002 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24198 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- diff --git a/src/compiler/graph-inl.h b/src/compiler/graph-inl.h index 571ffb3..efebf7b 100644 --- a/src/compiler/graph-inl.h +++ b/src/compiler/graph-inl.h @@ -14,8 +14,9 @@ namespace compiler { template void Graph::VisitNodeUsesFrom(Node* node, Visitor* visitor) { + Zone tmp_zone(zone()->isolate()); GenericGraphVisit::Visit >( - this, zone(), node, visitor); + this, &tmp_zone, node, visitor); } @@ -27,8 +28,9 @@ void Graph::VisitNodeUsesFromStart(Visitor* visitor) { template void Graph::VisitNodeInputsFromEnd(Visitor* visitor) { + Zone tmp_zone(zone()->isolate()); GenericGraphVisit::Visit >( - this, zone(), end(), visitor); + this, &tmp_zone, end(), visitor); } } } diff --git a/src/compiler/schedule.h b/src/compiler/schedule.h index 070691e..0ea499c 100644 --- a/src/compiler/schedule.h +++ b/src/compiler/schedule.h @@ -155,7 +155,7 @@ typedef BasicBlockVector::reverse_iterator BasicBlockVectorRIter; // by the graph's dependencies. A schedule is required to generate code. class Schedule : public GenericGraph { public: - explicit Schedule(Zone* zone) + explicit Schedule(Zone* zone, size_t node_count_hint = 0) : GenericGraph(zone), zone_(zone), all_blocks_(zone), @@ -163,6 +163,7 @@ class Schedule : public GenericGraph { rpo_order_(zone) { SetStart(NewBasicBlock()); // entry. SetEnd(NewBasicBlock()); // exit. + nodeid_to_block_.reserve(node_count_hint); } // Return the block which contains {node}, if any. diff --git a/src/compiler/scheduler.cc b/src/compiler/scheduler.cc index 4029950..58878a0 100644 --- a/src/compiler/scheduler.cc +++ b/src/compiler/scheduler.cc @@ -239,7 +239,8 @@ Schedule* Scheduler::ComputeSchedule(Graph* graph) { bool had_floating_control = false; do { Zone tmp_zone(graph->zone()->isolate()); - schedule = new (graph->zone()) Schedule(graph->zone()); + schedule = new (graph->zone()) + Schedule(graph->zone(), static_cast(graph->NodeCount())); Scheduler scheduler(&tmp_zone, graph, schedule); scheduler.BuildCFG();