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 |