| Index: src/hydrogen.cc
|
| diff --git a/src/hydrogen.cc b/src/hydrogen.cc
|
| index 2754fa32e01d764418471c10231c7db9e9697c64..de068094de98089bd780dd06a92c648001ac6561 100644
|
| --- a/src/hydrogen.cc
|
| +++ b/src/hydrogen.cc
|
| @@ -830,7 +830,7 @@ void HGraphBuilder::LoopBuilder::EndBody() {
|
| HGraph* HGraphBuilder::CreateGraph() {
|
| graph_ = new(zone()) HGraph(info_);
|
| if (FLAG_hydrogen_stats) HStatistics::Instance()->Initialize(info_);
|
| - HPhase phase("H_Block building");
|
| + HPhase phase("H_Block building", graph()->isolate());
|
| set_current_block(graph()->entry_block());
|
| if (!BuildGraph()) return NULL;
|
| return graph_;
|
| @@ -1553,7 +1553,7 @@ class PostorderProcessor : public ZoneObject {
|
|
|
|
|
| void HGraph::OrderBlocks() {
|
| - HPhase phase("H_Block ordering");
|
| + HPhase phase("H_Block ordering", isolate());
|
| BitVector visited(blocks_.length(), zone());
|
|
|
| ZoneList<HBasicBlock*> reverse_result(8, zone());
|
| @@ -10713,7 +10713,7 @@ void HTracer::TraceLiveRange(LiveRange* range, const char* type,
|
|
|
|
|
| void HTracer::FlushToFile() {
|
| - AppendChars(filename_, *trace_.ToCString(), trace_.length(), false);
|
| + AppendChars(filename_.start(), *trace_.ToCString(), trace_.length(), false);
|
| trace_.Reset();
|
| }
|
|
|
| @@ -10798,10 +10798,33 @@ void HStatistics::SaveTiming(const char* name, int64_t ticks, unsigned size) {
|
|
|
| const char* const HPhase::kFullCodeGen = "Full code generator";
|
|
|
| -void HPhase::Begin(const char* name,
|
| - HGraph* graph,
|
| - LChunk* chunk,
|
| - LAllocator* allocator) {
|
| +
|
| +HPhase::HPhase(const char* name, Isolate* isolate) {
|
| + Init(isolate, name, NULL, NULL, NULL);
|
| +}
|
| +
|
| +
|
| +HPhase::HPhase(const char* name, HGraph* graph) {
|
| + Init(graph->isolate(), name, graph, NULL, NULL);
|
| +}
|
| +
|
| +
|
| +HPhase::HPhase(const char* name, LChunk* chunk) {
|
| + Init(chunk->graph()->isolate(), name, NULL, chunk, NULL);
|
| +}
|
| +
|
| +
|
| +HPhase::HPhase(const char* name, LAllocator* allocator) {
|
| + Init(allocator->graph()->isolate(), name, NULL, NULL, allocator);
|
| +}
|
| +
|
| +
|
| +void HPhase::Init(Isolate* isolate,
|
| + const char* name,
|
| + HGraph* graph,
|
| + LChunk* chunk,
|
| + LAllocator* allocator) {
|
| + isolate_ = isolate;
|
| name_ = name;
|
| graph_ = graph;
|
| chunk_ = chunk;
|
| @@ -10809,26 +10832,32 @@ void HPhase::Begin(const char* name,
|
| if (allocator != NULL && chunk_ == NULL) {
|
| chunk_ = allocator->chunk();
|
| }
|
| - if (FLAG_hydrogen_stats) start_ = OS::Ticks();
|
| - start_allocation_size_ = Zone::allocation_size_;
|
| + if (FLAG_hydrogen_stats) {
|
| + start_ticks_ = OS::Ticks();
|
| + start_allocation_size_ = Zone::allocation_size_;
|
| + }
|
| }
|
|
|
|
|
| -void HPhase::End() const {
|
| +HPhase::~HPhase() {
|
| if (FLAG_hydrogen_stats) {
|
| - int64_t end = OS::Ticks();
|
| + int64_t ticks = OS::Ticks() - start_ticks_;
|
| unsigned size = Zone::allocation_size_ - start_allocation_size_;
|
| - HStatistics::Instance()->SaveTiming(name_, end - start_, size);
|
| + HStatistics::Instance()->SaveTiming(name_, ticks, size);
|
| }
|
|
|
| // Produce trace output if flag is set so that the first letter of the
|
| // phase name matches the command line parameter FLAG_trace_phase.
|
| if (FLAG_trace_hydrogen &&
|
| OS::StrChr(const_cast<char*>(FLAG_trace_phase), name_[0]) != NULL) {
|
| - if (graph_ != NULL) HTracer::Instance()->TraceHydrogen(name_, graph_);
|
| - if (chunk_ != NULL) HTracer::Instance()->TraceLithium(name_, chunk_);
|
| + if (graph_ != NULL) {
|
| + isolate_->GetHTracer()->TraceHydrogen(name_, graph_);
|
| + }
|
| + if (chunk_ != NULL) {
|
| + isolate_->GetHTracer()->TraceLithium(name_, chunk_);
|
| + }
|
| if (allocator_ != NULL) {
|
| - HTracer::Instance()->TraceLiveRanges(name_, allocator_);
|
| + isolate_->GetHTracer()->TraceLiveRanges(name_, allocator_);
|
| }
|
| }
|
|
|
|
|