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

Side by Side Diff: src/crankshaft/hydrogen.cc

Issue 2573653002: Fix how Hydrogen traces inlined functions. (Closed)
Patch Set: Created 4 years 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 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/crankshaft/hydrogen.h" 5 #include "src/crankshaft/hydrogen.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <sstream> 8 #include <sstream>
9 9
10 #include "src/allocation-site-scopes.h" 10 #include "src/allocation-site-scopes.h"
(...skipping 1373 matching lines...) Expand 10 before | Expand all | Expand 10 after
1384 if (FLAG_hydrogen_track_positions && 1384 if (FLAG_hydrogen_track_positions &&
1385 !script->source()->IsUndefined(isolate())) { 1385 !script->source()->IsUndefined(isolate())) {
1386 CodeTracer::Scope tracing_scope(isolate()->GetCodeTracer()); 1386 CodeTracer::Scope tracing_scope(isolate()->GetCodeTracer());
1387 Object* source_name = script->name(); 1387 Object* source_name = script->name();
1388 OFStream os(tracing_scope.file()); 1388 OFStream os(tracing_scope.file());
1389 os << "--- FUNCTION SOURCE ("; 1389 os << "--- FUNCTION SOURCE (";
1390 if (source_name->IsString()) { 1390 if (source_name->IsString()) {
1391 os << String::cast(source_name)->ToCString().get() << ":"; 1391 os << String::cast(source_name)->ToCString().get() << ":";
1392 } 1392 }
1393 os << shared->DebugName()->ToCString().get() << ") id{"; 1393 os << shared->DebugName()->ToCString().get() << ") id{";
1394 os << info_->optimization_id() << "," << inlining_id << "} ---\n"; 1394 os << info_->optimization_id() << "," << inlining_id << "} start{";
1395 os << shared->start_position() << "} ---\n";
1395 { 1396 {
1396 DisallowHeapAllocation no_allocation; 1397 DisallowHeapAllocation no_allocation;
1397 int start = shared->start_position(); 1398 int start = shared->start_position();
1398 int len = shared->end_position() - start; 1399 int len = shared->end_position() - start;
1399 String::SubStringRange source(String::cast(script->source()), start, 1400 String::SubStringRange source(String::cast(script->source()), start,
1400 len); 1401 len);
1401 for (const auto& c : source) { 1402 for (const auto& c : source) {
1402 os << AsReversiblyEscapedUC16(c); 1403 os << AsReversiblyEscapedUC16(c);
1403 } 1404 }
1404 } 1405 }
1405 1406
1406 os << "\n--- END ---\n"; 1407 os << "\n--- END ---\n";
1407 } 1408 }
1408 } 1409 }
1409 1410
1410 if (FLAG_hydrogen_track_positions && 1411 if (FLAG_hydrogen_track_positions &&
1411 inlining_id != SourcePosition::kNotInlined) { 1412 inlining_id != SourcePosition::kNotInlined) {
1412 CodeTracer::Scope tracing_scope(isolate()->GetCodeTracer()); 1413 CodeTracer::Scope tracing_scope(isolate()->GetCodeTracer());
1413 OFStream os(tracing_scope.file()); 1414 OFStream os(tracing_scope.file());
1414 os << "INLINE (" << shared->DebugName()->ToCString().get() << ") id{" 1415 os << "INLINE (" << shared->DebugName()->ToCString().get() << ") id{"
1415 << info_->optimization_id() << "," << inlining_id << "} AS " 1416 << info_->optimization_id() << "," << inlining_id << "} AS "
1416 << inlining_id << " AT " << position.ScriptOffset() << std::endl; 1417 << inlining_id << " AT ";
1418 if (position.IsKnown()) {
1419 os << "<" << position.InliningId() << ":" << position.ScriptOffset()
1420 << ">";
1421 } else {
1422 os << "<?>";
1423 }
1424 os << std::endl;
1417 } 1425 }
1418 } 1426 }
1419 1427
1420 HInstruction* HGraphBuilder::AddInstruction(HInstruction* instr) { 1428 HInstruction* HGraphBuilder::AddInstruction(HInstruction* instr) {
1421 DCHECK(current_block() != NULL); 1429 DCHECK(current_block() != NULL);
1422 DCHECK(!FLAG_hydrogen_track_positions || position_.IsKnown() || 1430 DCHECK(!FLAG_hydrogen_track_positions || position_.IsKnown() ||
1423 !info_->IsOptimizing()); 1431 !info_->IsOptimizing());
1424 current_block()->AddInstruction(instr, source_position()); 1432 current_block()->AddInstruction(instr, source_position());
1425 if (graph()->IsInsideNoSideEffectsScope()) { 1433 if (graph()->IsInsideNoSideEffectsScope()) {
1426 instr->SetFlag(HValue::kHasNoObservableSideEffects); 1434 instr->SetFlag(HValue::kHasNoObservableSideEffects);
(...skipping 11601 matching lines...) Expand 10 before | Expand all | Expand 10 after
13028 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); 13036 isolate()->GetHTracer()->TraceHydrogen(name(), graph_);
13029 } 13037 }
13030 13038
13031 #ifdef DEBUG 13039 #ifdef DEBUG
13032 graph_->Verify(false); // No full verify. 13040 graph_->Verify(false); // No full verify.
13033 #endif 13041 #endif
13034 } 13042 }
13035 13043
13036 } // namespace internal 13044 } // namespace internal
13037 } // namespace v8 13045 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698