| OLD | NEW |
| 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 <iomanip> | 5 #include <iomanip> |
| 6 #include <sstream> | 6 #include <sstream> |
| 7 | 7 |
| 8 #include "src/v8.h" | 8 #include "src/v8.h" |
| 9 | 9 |
| 10 #include "src/accessors.h" | 10 #include "src/accessors.h" |
| 11 #include "src/allocation-site-scopes.h" | 11 #include "src/allocation-site-scopes.h" |
| 12 #include "src/api.h" | 12 #include "src/api.h" |
| 13 #include "src/arguments.h" | 13 #include "src/arguments.h" |
| 14 #include "src/base/bits.h" | 14 #include "src/base/bits.h" |
| 15 #include "src/bootstrapper.h" | 15 #include "src/bootstrapper.h" |
| 16 #include "src/code-stubs.h" | 16 #include "src/code-stubs.h" |
| 17 #include "src/codegen.h" | 17 #include "src/codegen.h" |
| 18 #include "src/compiler.h" |
| 18 #include "src/cpu-profiler.h" | 19 #include "src/cpu-profiler.h" |
| 19 #include "src/date.h" | 20 #include "src/date.h" |
| 20 #include "src/debug.h" | 21 #include "src/debug.h" |
| 21 #include "src/deoptimizer.h" | 22 #include "src/deoptimizer.h" |
| 22 #include "src/elements.h" | 23 #include "src/elements.h" |
| 23 #include "src/execution.h" | 24 #include "src/execution.h" |
| 24 #include "src/field-index-inl.h" | 25 #include "src/field-index-inl.h" |
| 25 #include "src/field-index.h" | 26 #include "src/field-index.h" |
| 26 #include "src/full-codegen.h" | 27 #include "src/full-codegen.h" |
| 27 #include "src/heap/mark-compact.h" | 28 #include "src/heap/mark-compact.h" |
| (...skipping 11229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11257 default: | 11258 default: |
| 11258 UNREACHABLE(); | 11259 UNREACHABLE(); |
| 11259 break; | 11260 break; |
| 11260 } | 11261 } |
| 11261 return NULL; | 11262 return NULL; |
| 11262 } | 11263 } |
| 11263 | 11264 |
| 11264 | 11265 |
| 11265 void Code::PrintDeoptLocation(FILE* out, int bailout_id) { | 11266 void Code::PrintDeoptLocation(FILE* out, int bailout_id) { |
| 11266 Deoptimizer::DeoptInfo info = Deoptimizer::GetDeoptInfo(this, bailout_id); | 11267 Deoptimizer::DeoptInfo info = Deoptimizer::GetDeoptInfo(this, bailout_id); |
| 11267 if (info.deopt_reason != Deoptimizer::kNoReason || info.raw_position != 0) { | 11268 class SourcePosition pos = info.position; |
| 11268 PrintF(out, " ;;; deoptimize at %d: %s\n", info.raw_position, | 11269 if (info.deopt_reason != Deoptimizer::kNoReason || !pos.IsUnknown()) { |
| 11269 Deoptimizer::GetDeoptReason(info.deopt_reason)); | 11270 if (FLAG_hydrogen_track_positions) { |
| 11271 PrintF(out, " ;;; deoptimize at %d_%d: %s\n", |
| 11272 pos.inlining_id(), pos.position(), |
| 11273 Deoptimizer::GetDeoptReason(info.deopt_reason)); |
| 11274 } else { |
| 11275 PrintF(out, " ;;; deoptimize at %d: %s\n", pos.raw(), |
| 11276 Deoptimizer::GetDeoptReason(info.deopt_reason)); |
| 11277 } |
| 11270 } | 11278 } |
| 11271 } | 11279 } |
| 11272 | 11280 |
| 11273 | 11281 |
| 11274 bool Code::CanDeoptAt(Address pc) { | 11282 bool Code::CanDeoptAt(Address pc) { |
| 11275 DeoptimizationInputData* deopt_data = | 11283 DeoptimizationInputData* deopt_data = |
| 11276 DeoptimizationInputData::cast(deoptimization_data()); | 11284 DeoptimizationInputData::cast(deoptimization_data()); |
| 11277 Address code_start_address = instruction_start(); | 11285 Address code_start_address = instruction_start(); |
| 11278 for (int i = 0; i < deopt_data->DeoptCount(); i++) { | 11286 for (int i = 0; i < deopt_data->DeoptCount(); i++) { |
| 11279 if (deopt_data->Pc(i)->value() == -1) continue; | 11287 if (deopt_data->Pc(i)->value() == -1) continue; |
| (...skipping 5877 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 17157 CompilationInfo* info) { | 17165 CompilationInfo* info) { |
| 17158 Handle<DependentCode> codes = DependentCode::InsertCompilationInfo( | 17166 Handle<DependentCode> codes = DependentCode::InsertCompilationInfo( |
| 17159 handle(cell->dependent_code(), info->isolate()), | 17167 handle(cell->dependent_code(), info->isolate()), |
| 17160 DependentCode::kPropertyCellChangedGroup, info->object_wrapper()); | 17168 DependentCode::kPropertyCellChangedGroup, info->object_wrapper()); |
| 17161 if (*codes != cell->dependent_code()) cell->set_dependent_code(*codes); | 17169 if (*codes != cell->dependent_code()) cell->set_dependent_code(*codes); |
| 17162 info->dependencies(DependentCode::kPropertyCellChangedGroup)->Add( | 17170 info->dependencies(DependentCode::kPropertyCellChangedGroup)->Add( |
| 17163 cell, info->zone()); | 17171 cell, info->zone()); |
| 17164 } | 17172 } |
| 17165 | 17173 |
| 17166 } } // namespace v8::internal | 17174 } } // namespace v8::internal |
| OLD | NEW |