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

Side by Side Diff: src/codegen.cc

Issue 363323003: More OStreamsUse OStreams more often. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Rebased and polished. Created 6 years, 5 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 | « src/code-stubs.cc ('k') | src/deoptimizer.cc » ('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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/v8.h" 5 #include "src/v8.h"
6 6
7 #include "src/bootstrapper.h" 7 #include "src/bootstrapper.h"
8 #include "src/codegen.h" 8 #include "src/codegen.h"
9 #include "src/compiler.h" 9 #include "src/compiler.h"
10 #include "src/cpu-profiler.h" 10 #include "src/cpu-profiler.h"
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 : (FLAG_print_code || 168 : (FLAG_print_code ||
169 (info->IsStub() && FLAG_print_code_stubs) || 169 (info->IsStub() && FLAG_print_code_stubs) ||
170 (info->IsOptimizing() && FLAG_print_opt_code)); 170 (info->IsOptimizing() && FLAG_print_opt_code));
171 if (print_code) { 171 if (print_code) {
172 // Print the source code if available. 172 // Print the source code if available.
173 FunctionLiteral* function = info->function(); 173 FunctionLiteral* function = info->function();
174 bool print_source = code->kind() == Code::OPTIMIZED_FUNCTION || 174 bool print_source = code->kind() == Code::OPTIMIZED_FUNCTION ||
175 code->kind() == Code::FUNCTION; 175 code->kind() == Code::FUNCTION;
176 176
177 CodeTracer::Scope tracing_scope(info->isolate()->GetCodeTracer()); 177 CodeTracer::Scope tracing_scope(info->isolate()->GetCodeTracer());
178 OFStream os(tracing_scope.file());
178 if (print_source) { 179 if (print_source) {
179 Handle<Script> script = info->script(); 180 Handle<Script> script = info->script();
180 if (!script->IsUndefined() && !script->source()->IsUndefined()) { 181 if (!script->IsUndefined() && !script->source()->IsUndefined()) {
181 PrintF(tracing_scope.file(), "--- Raw source ---\n"); 182 os << "--- Raw source ---\n";
182 ConsStringIteratorOp op; 183 ConsStringIteratorOp op;
183 StringCharacterStream stream(String::cast(script->source()), 184 StringCharacterStream stream(String::cast(script->source()),
184 &op, 185 &op,
185 function->start_position()); 186 function->start_position());
186 // fun->end_position() points to the last character in the stream. We 187 // fun->end_position() points to the last character in the stream. We
187 // need to compensate by adding one to calculate the length. 188 // need to compensate by adding one to calculate the length.
188 int source_len = 189 int source_len =
189 function->end_position() - function->start_position() + 1; 190 function->end_position() - function->start_position() + 1;
190 for (int i = 0; i < source_len; i++) { 191 for (int i = 0; i < source_len; i++) {
191 if (stream.HasMore()) { 192 if (stream.HasMore()) {
192 PrintF(tracing_scope.file(), "%c", stream.GetNext()); 193 os.put(stream.GetNext());
193 } 194 }
194 } 195 }
195 PrintF(tracing_scope.file(), "\n\n"); 196 os << "\n\n";
196 } 197 }
197 } 198 }
198 if (info->IsOptimizing()) { 199 if (info->IsOptimizing()) {
199 if (FLAG_print_unopt_code) { 200 if (FLAG_print_unopt_code) {
200 PrintF(tracing_scope.file(), "--- Unoptimized code ---\n"); 201 os << "--- Unoptimized code ---\n";
201 info->closure()->shared()->code()->Disassemble( 202 info->closure()->shared()->code()->Disassemble(
202 function->debug_name()->ToCString().get(), tracing_scope.file()); 203 function->debug_name()->ToCString().get(), os);
203 } 204 }
204 PrintF(tracing_scope.file(), "--- Optimized code ---\n"); 205 os << "--- Optimized code ---\n"
205 PrintF(tracing_scope.file(), 206 << "optimization_id = " << info->optimization_id() << "\n";
206 "optimization_id = %d\n", info->optimization_id());
207 } else { 207 } else {
208 PrintF(tracing_scope.file(), "--- Code ---\n"); 208 os << "--- Code ---\n";
209 } 209 }
210 if (print_source) { 210 if (print_source) {
211 PrintF(tracing_scope.file(), 211 os << "source_position = " << function->start_position() << "\n";
212 "source_position = %d\n", function->start_position());
213 } 212 }
214 if (info->IsStub()) { 213 if (info->IsStub()) {
215 CodeStub::Major major_key = info->code_stub()->MajorKey(); 214 CodeStub::Major major_key = info->code_stub()->MajorKey();
216 code->Disassemble(CodeStub::MajorName(major_key, false), 215 code->Disassemble(CodeStub::MajorName(major_key, false), os);
217 tracing_scope.file());
218 } else { 216 } else {
219 code->Disassemble(function->debug_name()->ToCString().get(), 217 code->Disassemble(function->debug_name()->ToCString().get(), os);
220 tracing_scope.file());
221 } 218 }
222 PrintF(tracing_scope.file(), "--- End code ---\n"); 219 os << "--- End code ---\n";
223 } 220 }
224 #endif // ENABLE_DISASSEMBLER 221 #endif // ENABLE_DISASSEMBLER
225 } 222 }
226 223
227 224
228 bool CodeGenerator::RecordPositions(MacroAssembler* masm, 225 bool CodeGenerator::RecordPositions(MacroAssembler* masm,
229 int pos, 226 int pos,
230 bool right_here) { 227 bool right_here) {
231 if (pos != RelocInfo::kNoPosition) { 228 if (pos != RelocInfo::kNoPosition) {
232 masm->positions_recorder()->RecordStatementPosition(pos); 229 masm->positions_recorder()->RecordStatementPosition(pos);
(...skipping 29 matching lines...) Expand all
262 ASSERT(result_size_ == 1 || result_size_ == 2); 259 ASSERT(result_size_ == 1 || result_size_ == 2);
263 #ifdef _WIN64 260 #ifdef _WIN64
264 return result | ((result_size_ == 1) ? 0 : 2); 261 return result | ((result_size_ == 1) ? 0 : 2);
265 #else 262 #else
266 return result; 263 return result;
267 #endif 264 #endif
268 } 265 }
269 266
270 267
271 } } // namespace v8::internal 268 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/code-stubs.cc ('k') | src/deoptimizer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698