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

Side by Side Diff: runtime/vm/il_printer.cc

Issue 1314673008: Migrate logging infrastructure Isolate->Thread (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Add TODO regarding filtering. Created 5 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "vm/il_printer.h" 5 #include "vm/il_printer.h"
6 6
7 #include "vm/flow_graph_range_analysis.h" 7 #include "vm/flow_graph_range_analysis.h"
8 #include "vm/intermediate_language.h" 8 #include "vm/intermediate_language.h"
9 #include "vm/os.h" 9 #include "vm/os.h"
10 #include "vm/parser.h" 10 #include "vm/parser.h"
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 return found; 76 return found;
77 } 77 }
78 78
79 79
80 bool FlowGraphPrinter::ShouldPrint(const Function& function) { 80 bool FlowGraphPrinter::ShouldPrint(const Function& function) {
81 return PassesFilter(FLAG_print_flow_graph_filter, function); 81 return PassesFilter(FLAG_print_flow_graph_filter, function);
82 } 82 }
83 83
84 84
85 void FlowGraphPrinter::PrintGraph(const char* phase, FlowGraph* flow_graph) { 85 void FlowGraphPrinter::PrintGraph(const char* phase, FlowGraph* flow_graph) {
86 LogBlock lb(Isolate::Current()); 86 LogBlock lb(Thread::Current());
87 ISL_Print("*** BEGIN CFG\n%s\n", phase); 87 THR_Print("*** BEGIN CFG\n%s\n", phase);
88 FlowGraphPrinter printer(*flow_graph); 88 FlowGraphPrinter printer(*flow_graph);
89 printer.PrintBlocks(); 89 printer.PrintBlocks();
90 ISL_Print("*** END CFG\n"); 90 THR_Print("*** END CFG\n");
91 fflush(stdout); 91 fflush(stdout);
92 } 92 }
93 93
94 94
95 void FlowGraphPrinter::PrintBlock(BlockEntryInstr* block, 95 void FlowGraphPrinter::PrintBlock(BlockEntryInstr* block,
96 bool print_locations) { 96 bool print_locations) {
97 // Print the block entry. 97 // Print the block entry.
98 PrintOneInstruction(block, print_locations); 98 PrintOneInstruction(block, print_locations);
99 ISL_Print("\n"); 99 THR_Print("\n");
100 // And all the successors in the block. 100 // And all the successors in the block.
101 for (ForwardInstructionIterator it(block); !it.Done(); it.Advance()) { 101 for (ForwardInstructionIterator it(block); !it.Done(); it.Advance()) {
102 Instruction* current = it.Current(); 102 Instruction* current = it.Current();
103 PrintOneInstruction(current, print_locations); 103 PrintOneInstruction(current, print_locations);
104 ISL_Print("\n"); 104 THR_Print("\n");
105 } 105 }
106 } 106 }
107 107
108 108
109 void FlowGraphPrinter::PrintBlocks() { 109 void FlowGraphPrinter::PrintBlocks() {
110 if (!function_.IsNull()) { 110 if (!function_.IsNull()) {
111 ISL_Print("==== %s\n", function_.ToFullyQualifiedCString()); 111 THR_Print("==== %s\n", function_.ToFullyQualifiedCString());
112 } 112 }
113 113
114 for (intptr_t i = 0; i < block_order_.length(); ++i) { 114 for (intptr_t i = 0; i < block_order_.length(); ++i) {
115 PrintBlock(block_order_[i], print_locations_); 115 PrintBlock(block_order_[i], print_locations_);
116 } 116 }
117 } 117 }
118 118
119 119
120 void FlowGraphPrinter::PrintInstruction(Instruction* instr) { 120 void FlowGraphPrinter::PrintInstruction(Instruction* instr) {
121 PrintOneInstruction(instr, print_locations_); 121 PrintOneInstruction(instr, print_locations_);
122 } 122 }
123 123
124 124
125 void FlowGraphPrinter::PrintOneInstruction(Instruction* instr, 125 void FlowGraphPrinter::PrintOneInstruction(Instruction* instr,
126 bool print_locations) { 126 bool print_locations) {
127 char str[4000]; 127 char str[4000];
128 BufferFormatter f(str, sizeof(str)); 128 BufferFormatter f(str, sizeof(str));
129 instr->PrintTo(&f); 129 instr->PrintTo(&f);
130 if (FLAG_print_environments && (instr->env() != NULL)) { 130 if (FLAG_print_environments && (instr->env() != NULL)) {
131 instr->env()->PrintTo(&f); 131 instr->env()->PrintTo(&f);
132 } 132 }
133 if (print_locations && (instr->HasLocs())) { 133 if (print_locations && (instr->HasLocs())) {
134 instr->locs()->PrintTo(&f); 134 instr->locs()->PrintTo(&f);
135 } 135 }
136 if (instr->lifetime_position() != -1) { 136 if (instr->lifetime_position() != -1) {
137 ISL_Print("%3" Pd ": ", instr->lifetime_position()); 137 THR_Print("%3" Pd ": ", instr->lifetime_position());
138 } 138 }
139 if (!instr->IsBlockEntry()) ISL_Print(" "); 139 if (!instr->IsBlockEntry()) THR_Print(" ");
140 ISL_Print("%s", str); 140 THR_Print("%s", str);
141 if (FLAG_trace_inlining_intervals) { 141 if (FLAG_trace_inlining_intervals) {
142 ISL_Print(" iid: %" Pd "", instr->inlining_id()); 142 THR_Print(" iid: %" Pd "", instr->inlining_id());
143 } 143 }
144 } 144 }
145 145
146 146
147 void FlowGraphPrinter::PrintTypeCheck(const ParsedFunction& parsed_function, 147 void FlowGraphPrinter::PrintTypeCheck(const ParsedFunction& parsed_function,
148 intptr_t token_pos, 148 intptr_t token_pos,
149 Value* value, 149 Value* value,
150 const AbstractType& dst_type, 150 const AbstractType& dst_type,
151 const String& dst_name, 151 const String& dst_name,
152 bool eliminated) { 152 bool eliminated) {
153 const char* compile_type_name = "unknown"; 153 const char* compile_type_name = "unknown";
154 if (value != NULL && value->reaching_type_ != NULL) { 154 if (value != NULL && value->reaching_type_ != NULL) {
155 compile_type_name = value->reaching_type_->ToCString(); 155 compile_type_name = value->reaching_type_->ToCString();
156 } 156 }
157 ISL_Print("%s type check: compile type %s is %s specific than " 157 THR_Print("%s type check: compile type %s is %s specific than "
158 "type '%s' of '%s'.\n", 158 "type '%s' of '%s'.\n",
159 eliminated ? "Eliminated" : "Generated", 159 eliminated ? "Eliminated" : "Generated",
160 compile_type_name, 160 compile_type_name,
161 eliminated ? "more" : "not more", 161 eliminated ? "more" : "not more",
162 String::Handle(dst_type.Name()).ToCString(), 162 String::Handle(dst_type.Name()).ToCString(),
163 dst_name.ToCString()); 163 dst_name.ToCString());
164 } 164 }
165 165
166 166
167 void CompileType::PrintTo(BufferFormatter* f) const { 167 void CompileType::PrintTo(BufferFormatter* f) const {
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 f->Print(" cnt:%" Pd " trgt:'%s'", count, target.ToQualifiedCString()); 221 f->Print(" cnt:%" Pd " trgt:'%s'", count, target.ToQualifiedCString());
222 } 222 }
223 f->Print("]"); 223 f->Print("]");
224 } 224 }
225 225
226 226
227 void FlowGraphPrinter::PrintICData(const ICData& ic_data) { 227 void FlowGraphPrinter::PrintICData(const ICData& ic_data) {
228 char buffer[1024]; 228 char buffer[1024];
229 BufferFormatter f(buffer, sizeof(buffer)); 229 BufferFormatter f(buffer, sizeof(buffer));
230 PrintICDataHelper(&f, ic_data); 230 PrintICDataHelper(&f, ic_data);
231 ISL_Print("%s ", buffer); 231 THR_Print("%s ", buffer);
232 const Array& a = Array::Handle(ic_data.arguments_descriptor()); 232 const Array& a = Array::Handle(ic_data.arguments_descriptor());
233 ISL_Print(" arg-desc %" Pd "\n", a.Length()); 233 THR_Print(" arg-desc %" Pd "\n", a.Length());
234 } 234 }
235 235
236 236
237 static void PrintUse(BufferFormatter* f, const Definition& definition) { 237 static void PrintUse(BufferFormatter* f, const Definition& definition) {
238 if (definition.HasSSATemp()) { 238 if (definition.HasSSATemp()) {
239 if (definition.HasPairRepresentation()) { 239 if (definition.HasPairRepresentation()) {
240 f->Print("v%" Pd ", v%" Pd "", definition.ssa_temp_index(), 240 f->Print("v%" Pd ", v%" Pd "", definition.ssa_temp_index(),
241 definition.ssa_temp_index() + 1); 241 definition.ssa_temp_index() + 1);
242 } else { 242 } else {
243 f->Print("v%" Pd "", definition.ssa_temp_index()); 243 f->Print("v%" Pd "", definition.ssa_temp_index());
(...skipping 968 matching lines...) Expand 10 before | Expand all | Expand 10 after
1212 } 1212 }
1213 1213
1214 const char* Environment::ToCString() const { 1214 const char* Environment::ToCString() const {
1215 char buffer[1024]; 1215 char buffer[1024];
1216 BufferFormatter bf(buffer, 1024); 1216 BufferFormatter bf(buffer, 1024);
1217 PrintTo(&bf); 1217 PrintTo(&bf);
1218 return Thread::Current()->zone()->MakeCopyOfString(buffer); 1218 return Thread::Current()->zone()->MakeCopyOfString(buffer);
1219 } 1219 }
1220 1220
1221 } // namespace dart 1221 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/gc_marker.cc ('k') | runtime/vm/intrinsifier.cc » ('j') | runtime/vm/thread.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698