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" |
(...skipping 12466 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
12477 | 12477 |
12478 // Mark all the code that needs to be deoptimized. | 12478 // Mark all the code that needs to be deoptimized. |
12479 bool marked = false; | 12479 bool marked = false; |
12480 bool invalidate_embedded_objects = group == kWeakCodeGroup; | 12480 bool invalidate_embedded_objects = group == kWeakCodeGroup; |
12481 for (int i = start; i < end; i++) { | 12481 for (int i = start; i < end; i++) { |
12482 Object* obj = object_at(i); | 12482 Object* obj = object_at(i); |
12483 if (obj->IsWeakCell()) { | 12483 if (obj->IsWeakCell()) { |
12484 WeakCell* cell = WeakCell::cast(obj); | 12484 WeakCell* cell = WeakCell::cast(obj); |
12485 if (cell->cleared()) continue; | 12485 if (cell->cleared()) continue; |
12486 Code* code = Code::cast(cell->value()); | 12486 Code* code = Code::cast(cell->value()); |
12487 if (!code->marked_for_deoptimization()) { | 12487 if (!code->marked_for_deoptimization() && |
| 12488 (!code->is_turbofanned() || FLAG_turbo_deoptimization)) { |
12488 SetMarkedForDeoptimization(code, group); | 12489 SetMarkedForDeoptimization(code, group); |
12489 if (invalidate_embedded_objects) { | 12490 if (invalidate_embedded_objects) { |
12490 code->InvalidateEmbeddedObjects(); | 12491 code->InvalidateEmbeddedObjects(); |
12491 } | 12492 } |
12492 marked = true; | 12493 marked = true; |
12493 } | 12494 } |
12494 } else { | 12495 } else { |
12495 DCHECK(obj->IsForeign()); | 12496 DCHECK(obj->IsForeign()); |
12496 CompilationDependencies* info = | 12497 CompilationDependencies* info = |
12497 reinterpret_cast<CompilationDependencies*>( | 12498 reinterpret_cast<CompilationDependencies*>( |
(...skipping 4736 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
17234 void PropertyCell::SetValueWithInvalidation(Handle<PropertyCell> cell, | 17235 void PropertyCell::SetValueWithInvalidation(Handle<PropertyCell> cell, |
17235 Handle<Object> new_value) { | 17236 Handle<Object> new_value) { |
17236 if (cell->value() != *new_value) { | 17237 if (cell->value() != *new_value) { |
17237 cell->set_value(*new_value); | 17238 cell->set_value(*new_value); |
17238 Isolate* isolate = cell->GetIsolate(); | 17239 Isolate* isolate = cell->GetIsolate(); |
17239 cell->dependent_code()->DeoptimizeDependentCodeGroup( | 17240 cell->dependent_code()->DeoptimizeDependentCodeGroup( |
17240 isolate, DependentCode::kPropertyCellChangedGroup); | 17241 isolate, DependentCode::kPropertyCellChangedGroup); |
17241 } | 17242 } |
17242 } | 17243 } |
17243 } } // namespace v8::internal | 17244 } } // namespace v8::internal |
OLD | NEW |