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 14567 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
14578 } | 14578 } |
14579 | 14579 |
14580 | 14580 |
14581 bool Code::CanDeoptAt(Address pc) { | 14581 bool Code::CanDeoptAt(Address pc) { |
14582 DeoptimizationInputData* deopt_data = | 14582 DeoptimizationInputData* deopt_data = |
14583 DeoptimizationInputData::cast(deoptimization_data()); | 14583 DeoptimizationInputData::cast(deoptimization_data()); |
14584 Address code_start_address = instruction_start(); | 14584 Address code_start_address = instruction_start(); |
14585 for (int i = 0; i < deopt_data->DeoptCount(); i++) { | 14585 for (int i = 0; i < deopt_data->DeoptCount(); i++) { |
14586 if (deopt_data->Pc(i)->value() == -1) continue; | 14586 if (deopt_data->Pc(i)->value() == -1) continue; |
14587 Address address = code_start_address + deopt_data->Pc(i)->value(); | 14587 Address address = code_start_address + deopt_data->Pc(i)->value(); |
14588 if (address == pc) return true; | 14588 if (address == pc && deopt_data->AstId(i) != BailoutId::None()) { |
| 14589 return true; |
| 14590 } |
14589 } | 14591 } |
14590 return false; | 14592 return false; |
14591 } | 14593 } |
14592 | 14594 |
14593 | 14595 |
14594 // Identify kind of code. | 14596 // Identify kind of code. |
14595 const char* Code::Kind2String(Kind kind) { | 14597 const char* Code::Kind2String(Kind kind) { |
14596 switch (kind) { | 14598 switch (kind) { |
14597 #define CASE(name) case name: return #name; | 14599 #define CASE(name) case name: return #name; |
14598 CODE_KIND_LIST(CASE) | 14600 CODE_KIND_LIST(CASE) |
(...skipping 5261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
19860 if (cell->value() != *new_value) { | 19862 if (cell->value() != *new_value) { |
19861 cell->set_value(*new_value); | 19863 cell->set_value(*new_value); |
19862 Isolate* isolate = cell->GetIsolate(); | 19864 Isolate* isolate = cell->GetIsolate(); |
19863 cell->dependent_code()->DeoptimizeDependentCodeGroup( | 19865 cell->dependent_code()->DeoptimizeDependentCodeGroup( |
19864 isolate, DependentCode::kPropertyCellChangedGroup); | 19866 isolate, DependentCode::kPropertyCellChangedGroup); |
19865 } | 19867 } |
19866 } | 19868 } |
19867 | 19869 |
19868 } // namespace internal | 19870 } // namespace internal |
19869 } // namespace v8 | 19871 } // namespace v8 |
OLD | NEW |