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

Side by Side Diff: src/hydrogen.cc

Issue 6995024: Improved c1visualizer output a bit: Emit a human-readable description for (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 9 years, 7 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | src/hydrogen-instructions.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 5871 matching lines...) Expand 10 before | Expand all | Expand 10 after
5882 LifetimePosition::FromInstructionIndex(first_index).Value()); 5882 LifetimePosition::FromInstructionIndex(first_index).Value());
5883 PrintIntProperty( 5883 PrintIntProperty(
5884 "last_lir_id", 5884 "last_lir_id",
5885 LifetimePosition::FromInstructionIndex(last_index).Value()); 5885 LifetimePosition::FromInstructionIndex(last_index).Value());
5886 } 5886 }
5887 5887
5888 { 5888 {
5889 Tag states_tag(this, "states"); 5889 Tag states_tag(this, "states");
5890 Tag locals_tag(this, "locals"); 5890 Tag locals_tag(this, "locals");
5891 int total = current->phis()->length(); 5891 int total = current->phis()->length();
5892 trace_.Add("size %d\n", total); 5892 PrintIntProperty("size", current->phis()->length());
5893 trace_.Add("method \"None\""); 5893 PrintStringProperty("method", "None");
5894 for (int j = 0; j < total; ++j) { 5894 for (int j = 0; j < total; ++j) {
5895 HPhi* phi = current->phis()->at(j); 5895 HPhi* phi = current->phis()->at(j);
5896 PrintIndent();
5896 trace_.Add("%d ", phi->merged_index()); 5897 trace_.Add("%d ", phi->merged_index());
5897 phi->PrintNameTo(&trace_); 5898 phi->PrintNameTo(&trace_);
5898 trace_.Add(" "); 5899 trace_.Add(" ");
5899 phi->PrintTo(&trace_); 5900 phi->PrintTo(&trace_);
5900 trace_.Add("\n"); 5901 trace_.Add("\n");
5901 } 5902 }
5902 } 5903 }
5903 5904
5904 { 5905 {
5905 Tag HIR_tag(this, "HIR"); 5906 Tag HIR_tag(this, "HIR");
5906 HInstruction* instruction = current->first(); 5907 HInstruction* instruction = current->first();
5907 while (instruction != NULL) { 5908 while (instruction != NULL) {
5908 int bci = 0; 5909 int bci = 0;
5909 int uses = instruction->UseCount(); 5910 int uses = instruction->UseCount();
5911 PrintIndent();
5910 trace_.Add("%d %d ", bci, uses); 5912 trace_.Add("%d %d ", bci, uses);
5911 instruction->PrintNameTo(&trace_); 5913 instruction->PrintNameTo(&trace_);
5912 trace_.Add(" "); 5914 trace_.Add(" ");
5913 instruction->PrintTo(&trace_); 5915 instruction->PrintTo(&trace_);
5914 trace_.Add(" <|@\n"); 5916 trace_.Add(" <|@\n");
5915 instruction = instruction->next(); 5917 instruction = instruction->next();
5916 } 5918 }
5917 } 5919 }
5918 5920
5919 5921
5920 if (chunk != NULL) { 5922 if (chunk != NULL) {
5921 Tag LIR_tag(this, "LIR"); 5923 Tag LIR_tag(this, "LIR");
5922 int first_index = current->first_instruction_index(); 5924 int first_index = current->first_instruction_index();
5923 int last_index = current->last_instruction_index(); 5925 int last_index = current->last_instruction_index();
5924 if (first_index != -1 && last_index != -1) { 5926 if (first_index != -1 && last_index != -1) {
5925 const ZoneList<LInstruction*>* instructions = chunk->instructions(); 5927 const ZoneList<LInstruction*>* instructions = chunk->instructions();
5926 for (int i = first_index; i <= last_index; ++i) { 5928 for (int i = first_index; i <= last_index; ++i) {
5927 LInstruction* linstr = instructions->at(i); 5929 LInstruction* linstr = instructions->at(i);
5928 if (linstr != NULL) { 5930 if (linstr != NULL) {
5931 PrintIndent();
5929 trace_.Add("%d ", 5932 trace_.Add("%d ",
5930 LifetimePosition::FromInstructionIndex(i).Value()); 5933 LifetimePosition::FromInstructionIndex(i).Value());
5931 linstr->PrintTo(&trace_); 5934 linstr->PrintTo(&trace_);
5932 trace_.Add(" <|@\n"); 5935 trace_.Add(" <|@\n");
5933 } 5936 }
5934 } 5937 }
5935 } 5938 }
5936 } 5939 }
5937 } 5940 }
5938 } 5941 }
(...skipping 15 matching lines...) Expand all
5954 5957
5955 const ZoneList<LiveRange*>* live_ranges = allocator->live_ranges(); 5958 const ZoneList<LiveRange*>* live_ranges = allocator->live_ranges();
5956 for (int i = 0; i < live_ranges->length(); ++i) { 5959 for (int i = 0; i < live_ranges->length(); ++i) {
5957 TraceLiveRange(live_ranges->at(i), "object"); 5960 TraceLiveRange(live_ranges->at(i), "object");
5958 } 5961 }
5959 } 5962 }
5960 5963
5961 5964
5962 void HTracer::TraceLiveRange(LiveRange* range, const char* type) { 5965 void HTracer::TraceLiveRange(LiveRange* range, const char* type) {
5963 if (range != NULL && !range->IsEmpty()) { 5966 if (range != NULL && !range->IsEmpty()) {
5967 PrintIndent();
5964 trace_.Add("%d %s", range->id(), type); 5968 trace_.Add("%d %s", range->id(), type);
5965 if (range->HasRegisterAssigned()) { 5969 if (range->HasRegisterAssigned()) {
5966 LOperand* op = range->CreateAssignedOperand(); 5970 LOperand* op = range->CreateAssignedOperand();
5967 int assigned_reg = op->index(); 5971 int assigned_reg = op->index();
5968 if (op->IsDoubleRegister()) { 5972 if (op->IsDoubleRegister()) {
5969 trace_.Add(" \"%s\"", 5973 trace_.Add(" \"%s\"",
5970 DoubleRegister::AllocationIndexToString(assigned_reg)); 5974 DoubleRegister::AllocationIndexToString(assigned_reg));
5971 } else { 5975 } else {
5972 ASSERT(op->IsRegister()); 5976 ASSERT(op->IsRegister());
5973 trace_.Add(" \"%s\"", Register::AllocationIndexToString(assigned_reg)); 5977 trace_.Add(" \"%s\"", Register::AllocationIndexToString(assigned_reg));
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
6113 } 6117 }
6114 } 6118 }
6115 6119
6116 #ifdef DEBUG 6120 #ifdef DEBUG
6117 if (graph_ != NULL) graph_->Verify(); 6121 if (graph_ != NULL) graph_->Verify();
6118 if (allocator_ != NULL) allocator_->Verify(); 6122 if (allocator_ != NULL) allocator_->Verify();
6119 #endif 6123 #endif
6120 } 6124 }
6121 6125
6122 } } // namespace v8::internal 6126 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « no previous file | src/hydrogen-instructions.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698