| OLD | NEW |
| 1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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/objects.h" | 5 #include "src/objects.h" |
| 6 | 6 |
| 7 #include <cmath> | 7 #include <cmath> |
| 8 #include <iomanip> | 8 #include <iomanip> |
| 9 #include <sstream> | 9 #include <sstream> |
| 10 | 10 |
| (...skipping 14453 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 14464 } | 14464 } |
| 14465 | 14465 |
| 14466 | 14466 |
| 14467 bool Code::CanDeoptAt(Address pc) { | 14467 bool Code::CanDeoptAt(Address pc) { |
| 14468 DeoptimizationInputData* deopt_data = | 14468 DeoptimizationInputData* deopt_data = |
| 14469 DeoptimizationInputData::cast(deoptimization_data()); | 14469 DeoptimizationInputData::cast(deoptimization_data()); |
| 14470 Address code_start_address = instruction_start(); | 14470 Address code_start_address = instruction_start(); |
| 14471 for (int i = 0; i < deopt_data->DeoptCount(); i++) { | 14471 for (int i = 0; i < deopt_data->DeoptCount(); i++) { |
| 14472 if (deopt_data->Pc(i)->value() == -1) continue; | 14472 if (deopt_data->Pc(i)->value() == -1) continue; |
| 14473 Address address = code_start_address + deopt_data->Pc(i)->value(); | 14473 Address address = code_start_address + deopt_data->Pc(i)->value(); |
| 14474 if (address == pc) return true; | 14474 if (address == pc && deopt_data->AstId(i) != BailoutId::None()) { |
| 14475 return true; |
| 14476 } |
| 14475 } | 14477 } |
| 14476 return false; | 14478 return false; |
| 14477 } | 14479 } |
| 14478 | 14480 |
| 14479 | 14481 |
| 14480 // Identify kind of code. | 14482 // Identify kind of code. |
| 14481 const char* Code::Kind2String(Kind kind) { | 14483 const char* Code::Kind2String(Kind kind) { |
| 14482 switch (kind) { | 14484 switch (kind) { |
| 14483 #define CASE(name) case name: return #name; | 14485 #define CASE(name) case name: return #name; |
| 14484 CODE_KIND_LIST(CASE) | 14486 CODE_KIND_LIST(CASE) |
| (...skipping 5249 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 19734 if (cell->value() != *new_value) { | 19736 if (cell->value() != *new_value) { |
| 19735 cell->set_value(*new_value); | 19737 cell->set_value(*new_value); |
| 19736 Isolate* isolate = cell->GetIsolate(); | 19738 Isolate* isolate = cell->GetIsolate(); |
| 19737 cell->dependent_code()->DeoptimizeDependentCodeGroup( | 19739 cell->dependent_code()->DeoptimizeDependentCodeGroup( |
| 19738 isolate, DependentCode::kPropertyCellChangedGroup); | 19740 isolate, DependentCode::kPropertyCellChangedGroup); |
| 19739 } | 19741 } |
| 19740 } | 19742 } |
| 19741 | 19743 |
| 19742 } // namespace internal | 19744 } // namespace internal |
| 19743 } // namespace v8 | 19745 } // namespace v8 |
| OLD | NEW |