| Index: src/objects.cc
|
| diff --git a/src/objects.cc b/src/objects.cc
|
| index 452c1d62d5ec673f30d6e9cb4549c80ce80fba4e..45f7ff5cf3dd7cf69c5fe64ad4d6a6da534be195 100644
|
| --- a/src/objects.cc
|
| +++ b/src/objects.cc
|
| @@ -11366,13 +11366,15 @@ void DependentCode::DeoptimizeDependentCodeGroup(
|
| 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);
|
| + // Mark all the code that needs to be deoptimized.
|
| + bool marked = false;
|
| for (int i = start; i < end; i++) {
|
| if (is_code_at(i)) {
|
| Code* code = code_at(i);
|
| - if (!code->marked_for_deoptimization()) codes.Add(code, &zone);
|
| + if (!code->marked_for_deoptimization()) {
|
| + code->set_marked_for_deoptimization(true);
|
| + marked = true;
|
| + }
|
| } else {
|
| CompilationInfo* info = compilation_info_at(i);
|
| info->AbortDueToDependencyChange();
|
| @@ -11388,7 +11390,8 @@ void DependentCode::DeoptimizeDependentCodeGroup(
|
| clear_at(i);
|
| }
|
| set_number_of_entries(group, 0);
|
| - Deoptimizer::DeoptimizeCodeList(isolate, &codes);
|
| +
|
| + if (marked) Deoptimizer::DeoptimizeMarkedCode(isolate);
|
| }
|
|
|
|
|
|
|