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

Unified Diff: src/compiler/pipeline.cc

Issue 663333003: [turbofan] use ZonePool in most places in the compiler pipeline a temp zone is used. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: rebase Created 6 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 | « src/compiler/pipeline.h ('k') | src/compiler/register-allocator.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/compiler/pipeline.cc
diff --git a/src/compiler/pipeline.cc b/src/compiler/pipeline.cc
index 8c995616fe7e6a9a3ea419a25054ee33c7039d2f..438f10459524b33113a439c942e0434097f1fdc2 100644
--- a/src/compiler/pipeline.cc
+++ b/src/compiler/pipeline.cc
@@ -178,9 +178,11 @@ void Pipeline::PrintAllocator(const char* phase,
class AstGraphBuilderWithPositions : public AstGraphBuilder {
public:
- explicit AstGraphBuilderWithPositions(CompilationInfo* info, JSGraph* jsgraph,
+ explicit AstGraphBuilderWithPositions(Zone* local_zone, CompilationInfo* info,
+ JSGraph* jsgraph,
SourcePositionTable* source_positions)
- : AstGraphBuilder(info, jsgraph), source_positions_(source_positions) {}
+ : AstGraphBuilder(local_zone, info, jsgraph),
+ source_positions_(source_positions) {}
bool CreateGraph() {
SourcePositionTable::Scope pos(source_positions_,
@@ -253,8 +255,9 @@ Handle<Code> Pipeline::GenerateCode() {
{
PhaseStats graph_builder_stats(info(), &zone_pool, PhaseStats::CREATE_GRAPH,
"graph builder");
- AstGraphBuilderWithPositions graph_builder(info(), &jsgraph,
- &source_positions);
+ ZonePool::Scope zone_scope(&zone_pool);
+ AstGraphBuilderWithPositions graph_builder(zone_scope.zone(), info(),
+ &jsgraph, &source_positions);
graph_builder.CreateGraph();
context_node = graph_builder.GetFunctionContext();
}
@@ -284,7 +287,8 @@ Handle<Code> Pipeline::GenerateCode() {
if (info()->is_inlining_enabled()) {
SourcePositionTable::Scope pos(&source_positions,
SourcePosition::Unknown());
- JSInliner inliner(info(), &jsgraph);
+ ZonePool::Scope zone_scope(&zone_pool);
+ JSInliner inliner(zone_scope.zone(), info(), &jsgraph);
inliner.Inline();
VerifyAndPrintGraph(&graph, "Inlined", true);
}
@@ -367,7 +371,8 @@ Handle<Code> Pipeline::GenerateCode() {
SourcePosition::Unknown());
PhaseStats control_reducer_stats(
info(), &zone_pool, PhaseStats::CREATE_GRAPH, "control reduction");
- ControlReducer::ReduceGraph(&jsgraph, &common);
+ ZonePool::Scope zone_scope(&zone_pool);
+ ControlReducer::ReduceGraph(zone_scope.zone(), &jsgraph, &common);
VerifyAndPrintGraph(&graph, "Control reduced");
}
@@ -398,7 +403,8 @@ Handle<Code> Pipeline::GenerateCode() {
PhaseStats codegen_stats(info(), &zone_pool, PhaseStats::CODEGEN,
"codegen");
Linkage linkage(info());
- code = GenerateCode(&linkage, &graph, schedule, &source_positions);
+ code =
+ GenerateCode(&zone_pool, &linkage, &graph, schedule, &source_positions);
info()->SetCode(code);
}
@@ -430,17 +436,18 @@ Schedule* Pipeline::ComputeSchedule(ZonePool* zone_pool, Graph* graph) {
Handle<Code> Pipeline::GenerateCodeForMachineGraph(Linkage* linkage,
Graph* graph,
Schedule* schedule) {
+ ZonePool zone_pool(isolate());
CHECK(SupportedBackend());
if (schedule == NULL) {
// TODO(rossberg): Should this really be untyped?
VerifyAndPrintGraph(graph, "Machine", true);
- ZonePool zone_pool(isolate());
schedule = ComputeSchedule(&zone_pool, graph);
}
TraceSchedule(schedule);
SourcePositionTable source_positions(graph);
- Handle<Code> code = GenerateCode(linkage, graph, schedule, &source_positions);
+ Handle<Code> code =
+ GenerateCode(&zone_pool, linkage, graph, schedule, &source_positions);
#if ENABLE_DISASSEMBLER
if (!code.is_null() && FLAG_print_opt_code) {
CodeTracer::Scope tracing_scope(isolate()->GetCodeTracer());
@@ -452,8 +459,8 @@ Handle<Code> Pipeline::GenerateCodeForMachineGraph(Linkage* linkage,
}
-Handle<Code> Pipeline::GenerateCode(Linkage* linkage, Graph* graph,
- Schedule* schedule,
+Handle<Code> Pipeline::GenerateCode(ZonePool* zone_pool, Linkage* linkage,
+ Graph* graph, Schedule* schedule,
SourcePositionTable* source_positions) {
DCHECK_NOT_NULL(graph);
DCHECK_NOT_NULL(linkage);
@@ -470,8 +477,9 @@ Handle<Code> Pipeline::GenerateCode(Linkage* linkage, Graph* graph,
// Select and schedule instructions covering the scheduled graph.
{
- InstructionSelector selector(linkage, &sequence, schedule,
- source_positions);
+ ZonePool::Scope zone_scope(zone_pool);
+ InstructionSelector selector(zone_scope.zone(), linkage, &sequence,
+ schedule, source_positions);
selector.SelectInstructions();
}
@@ -491,8 +499,10 @@ Handle<Code> Pipeline::GenerateCode(Linkage* linkage, Graph* graph,
linkage->info()->AbortOptimization(kNotEnoughVirtualRegistersForValues);
return Handle<Code>::null();
}
- RegisterAllocator allocator(&frame, linkage->info(), &sequence);
- if (!allocator.Allocate()) {
+ ZonePool::Scope zone_scope(zone_pool);
+ RegisterAllocator allocator(zone_scope.zone(), &frame, linkage->info(),
+ &sequence);
+ if (!allocator.Allocate(zone_pool)) {
linkage->info()->AbortOptimization(kNotEnoughVirtualRegistersRegalloc);
return Handle<Code>::null();
}
« no previous file with comments | « src/compiler/pipeline.h ('k') | src/compiler/register-allocator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698