| OLD | NEW |
| 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/compiler.h" | 7 #include "src/compiler.h" |
| 8 | 8 |
| 9 #include "src/ast-numbering.h" | 9 #include "src/ast-numbering.h" |
| 10 #include "src/bootstrapper.h" | 10 #include "src/bootstrapper.h" |
| (...skipping 17 matching lines...) Expand all Loading... |
| 28 #include "src/scanner-character-streams.h" | 28 #include "src/scanner-character-streams.h" |
| 29 #include "src/scopeinfo.h" | 29 #include "src/scopeinfo.h" |
| 30 #include "src/scopes.h" | 30 #include "src/scopes.h" |
| 31 #include "src/typing.h" | 31 #include "src/typing.h" |
| 32 #include "src/vm-state-inl.h" | 32 #include "src/vm-state-inl.h" |
| 33 | 33 |
| 34 namespace v8 { | 34 namespace v8 { |
| 35 namespace internal { | 35 namespace internal { |
| 36 | 36 |
| 37 | 37 |
| 38 std::ostream& operator<<(std::ostream& os, const SourcePosition& p) { |
| 39 if (p.IsUnknown()) { |
| 40 return os << "<?>"; |
| 41 } else if (FLAG_hydrogen_track_positions) { |
| 42 return os << "<" << p.inlining_id() << ":" << p.position() << ">"; |
| 43 } else { |
| 44 return os << "<0:" << p.raw() << ">"; |
| 45 } |
| 46 } |
| 47 |
| 48 |
| 38 ScriptData::ScriptData(const byte* data, int length) | 49 ScriptData::ScriptData(const byte* data, int length) |
| 39 : owns_data_(false), rejected_(false), data_(data), length_(length) { | 50 : owns_data_(false), rejected_(false), data_(data), length_(length) { |
| 40 if (!IsAligned(reinterpret_cast<intptr_t>(data), kPointerAlignment)) { | 51 if (!IsAligned(reinterpret_cast<intptr_t>(data), kPointerAlignment)) { |
| 41 byte* copy = NewArray<byte>(length); | 52 byte* copy = NewArray<byte>(length); |
| 42 DCHECK(IsAligned(reinterpret_cast<intptr_t>(copy), kPointerAlignment)); | 53 DCHECK(IsAligned(reinterpret_cast<intptr_t>(copy), kPointerAlignment)); |
| 43 CopyBytes(copy, data, length); | 54 CopyBytes(copy, data, length); |
| 44 data_ = copy; | 55 data_ = copy; |
| 45 AcquireDataOwnership(); | 56 AcquireDataOwnership(); |
| 46 } | 57 } |
| 47 } | 58 } |
| (...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 317 } | 328 } |
| 318 } | 329 } |
| 319 | 330 |
| 320 | 331 |
| 321 bool CompilationInfo::is_simple_parameter_list() { | 332 bool CompilationInfo::is_simple_parameter_list() { |
| 322 return scope_->is_simple_parameter_list(); | 333 return scope_->is_simple_parameter_list(); |
| 323 } | 334 } |
| 324 | 335 |
| 325 | 336 |
| 326 int CompilationInfo::TraceInlinedFunction(Handle<SharedFunctionInfo> shared, | 337 int CompilationInfo::TraceInlinedFunction(Handle<SharedFunctionInfo> shared, |
| 327 int raw_position) { | 338 SourcePosition position) { |
| 328 if (!FLAG_hydrogen_track_positions) { | 339 if (!FLAG_hydrogen_track_positions) { |
| 329 return 0; | 340 return 0; |
| 330 } | 341 } |
| 331 | 342 |
| 332 DCHECK(inlined_function_infos_); | 343 DCHECK(inlined_function_infos_); |
| 333 DCHECK(inlining_id_to_function_id_); | 344 DCHECK(inlining_id_to_function_id_); |
| 334 int id = 0; | 345 int id = 0; |
| 335 for (; id < inlined_function_infos_->length(); id++) { | 346 for (; id < inlined_function_infos_->length(); id++) { |
| 336 if (inlined_function_infos_->at(id).shared().is_identical_to(shared)) { | 347 if (inlined_function_infos_->at(id).shared().is_identical_to(shared)) { |
| 337 break; | 348 break; |
| (...skipping 24 matching lines...) Expand all Loading... |
| 362 } | 373 } |
| 363 } | 374 } |
| 364 } | 375 } |
| 365 | 376 |
| 366 int inline_id = inlining_id_to_function_id_->length(); | 377 int inline_id = inlining_id_to_function_id_->length(); |
| 367 inlining_id_to_function_id_->Add(id); | 378 inlining_id_to_function_id_->Add(id); |
| 368 | 379 |
| 369 if (inline_id != 0) { | 380 if (inline_id != 0) { |
| 370 CodeTracer::Scope tracing_scope(isolate()->GetCodeTracer()); | 381 CodeTracer::Scope tracing_scope(isolate()->GetCodeTracer()); |
| 371 OFStream os(tracing_scope.file()); | 382 OFStream os(tracing_scope.file()); |
| 372 HSourcePosition position = HSourcePosition::FromRaw(raw_position); | |
| 373 os << "INLINE (" << shared->DebugName()->ToCString().get() << ") id{" | 383 os << "INLINE (" << shared->DebugName()->ToCString().get() << ") id{" |
| 374 << optimization_id() << "," << id << "} AS " << inline_id << " AT " | 384 << optimization_id() << "," << id << "} AS " << inline_id << " AT " |
| 375 << position << std::endl; | 385 << position << std::endl; |
| 376 } | 386 } |
| 377 | 387 |
| 378 return inline_id; | 388 return inline_id; |
| 379 } | 389 } |
| 380 | 390 |
| 381 | 391 |
| 382 class HOptimizedGraphBuilderWithPositions: public HOptimizedGraphBuilder { | 392 class HOptimizedGraphBuilderWithPositions: public HOptimizedGraphBuilder { |
| (...skipping 1207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1590 } | 1600 } |
| 1591 | 1601 |
| 1592 | 1602 |
| 1593 #if DEBUG | 1603 #if DEBUG |
| 1594 void CompilationInfo::PrintAstForTesting() { | 1604 void CompilationInfo::PrintAstForTesting() { |
| 1595 PrintF("--- Source from AST ---\n%s\n", | 1605 PrintF("--- Source from AST ---\n%s\n", |
| 1596 PrettyPrinter(isolate(), zone()).PrintProgram(function())); | 1606 PrettyPrinter(isolate(), zone()).PrintProgram(function())); |
| 1597 } | 1607 } |
| 1598 #endif | 1608 #endif |
| 1599 } } // namespace v8::internal | 1609 } } // namespace v8::internal |
| OLD | NEW |