Index: src/mark-compact.cc |
diff --git a/src/mark-compact.cc b/src/mark-compact.cc |
index a07b468300f98756c3afb29d0d0103e72b986f64..99c5b4864d3ed94cb37e5a113994bd35e4559acd 100644 |
--- a/src/mark-compact.cc |
+++ b/src/mark-compact.cc |
@@ -2481,11 +2481,12 @@ void MarkCompactCollector::ClearAndDeoptimizeDependentCode(Map* map) { |
int number_of_entries = starts.number_of_entries(); |
if (number_of_entries == 0) return; |
for (int i = 0; i < number_of_entries; i++) { |
+ if (!entries->is_code_at(i)) continue; |
Code* code = entries->code_at(i); |
if (IsMarked(code) && !code->marked_for_deoptimization()) { |
code->set_marked_for_deoptimization(true); |
} |
- entries->clear_code_at(i); |
+ entries->clear_at(i); |
} |
map->set_dependent_code(DependentCode::cast(heap()->empty_fixed_array())); |
} |
@@ -2502,14 +2503,15 @@ void MarkCompactCollector::ClearNonLiveDependentCode(Map* map) { |
for (int g = 0; g < DependentCode::kGroupCount; g++) { |
int group_number_of_entries = 0; |
for (int i = starts.at(g); i < starts.at(g + 1); i++) { |
+ if (!entries->is_code_at(i)) continue; |
Code* code = entries->code_at(i); |
if (IsMarked(code) && !code->marked_for_deoptimization()) { |
if (new_number_of_entries + group_number_of_entries != i) { |
- entries->set_code_at(new_number_of_entries + |
- group_number_of_entries, code); |
+ entries->set_object_at( |
+ new_number_of_entries + group_number_of_entries, code); |
} |
- Object** slot = entries->code_slot_at(new_number_of_entries + |
- group_number_of_entries); |
+ Object** slot = entries->slot_at(new_number_of_entries + |
+ group_number_of_entries); |
RecordSlot(slot, slot, code); |
group_number_of_entries++; |
} |
@@ -2520,7 +2522,7 @@ void MarkCompactCollector::ClearNonLiveDependentCode(Map* map) { |
new_number_of_entries += group_number_of_entries; |
} |
for (int i = new_number_of_entries; i < number_of_entries; i++) { |
- entries->clear_code_at(i); |
+ entries->clear_at(i); |
} |
} |