Chromium Code Reviews| Index: src/objects.cc |
| diff --git a/src/objects.cc b/src/objects.cc |
| index 5f2a7b5b2e262fb504426b4e00f6d789725e7196..39e9c34cc35d95e02fde6e6fe8e7b53b9e7debeb 100644 |
| --- a/src/objects.cc |
| +++ b/src/objects.cc |
| @@ -11335,14 +11335,6 @@ bool DependentCode::Contains(DependencyGroup group, Code* code) { |
| } |
| -class DeoptimizeDependentCodeFilter : public OptimizedFunctionFilter { |
| - public: |
| - virtual bool TakeFunction(JSFunction* function) { |
| - return function->code()->marked_for_deoptimization(); |
| - } |
| -}; |
| - |
| - |
| void DependentCode::DeoptimizeDependentCodeGroup( |
| Isolate* isolate, |
| DependentCode::DependencyGroup group) { |
| @@ -11352,10 +11344,14 @@ void DependentCode::DeoptimizeDependentCodeGroup( |
| int end = starts.at(group + 1); |
| int code_entries = starts.number_of_entries(); |
| if (start == end) return; |
| + |
| + // Collect all the code to deoptimize. |
| + Zone zone(isolate); |
| + ZoneList<Code*> codes(end - start, &zone); |
| for (int i = start; i < end; i++) { |
| if (is_code_at(i)) { |
| Code* code = code_at(i); |
| - code->set_marked_for_deoptimization(true); |
| + if (!code->marked_for_deoptimization()) codes.Add(code, &zone); |
|
ulan
2013/07/22 09:23:08
code->set_marked_for_deoptimization(true) after ad
titzer
2013/07/23 12:41:00
Done.
|
| } else { |
| CompilationInfo* info = compilation_info_at(i); |
| info->AbortDueToDependencyChange(); |
| @@ -11371,8 +11367,7 @@ void DependentCode::DeoptimizeDependentCodeGroup( |
| clear_at(i); |
| } |
| set_number_of_entries(group, 0); |
| - DeoptimizeDependentCodeFilter filter; |
| - Deoptimizer::DeoptimizeAllFunctionsWith(isolate, &filter); |
| + Deoptimizer::DeoptimizeCodeList(isolate, &codes); |
| } |