Chromium Code Reviews| Index: src/mark-compact.cc |
| diff --git a/src/mark-compact.cc b/src/mark-compact.cc |
| index f04a8bcb9a64105a496b8e4926cc833d06b7bc3a..b2b782bd879b0c2555f4280bb7e9ca234b22290c 100644 |
| --- a/src/mark-compact.cc |
| +++ b/src/mark-compact.cc |
| @@ -449,7 +449,7 @@ void MarkCompactCollector::CollectGarbage() { |
| #ifdef VERIFY_HEAP |
| if (heap()->weak_embedded_objects_verification_enabled()) { |
| - VerifyWeakEmbeddedObjectsInOptimizedCode(); |
| + VerifyWeakEmbeddedObjectsInCode(); |
| } |
| if (FLAG_collect_maps && FLAG_omit_map_checks_for_leaf_maps) { |
| VerifyOmittedMapChecks(); |
| @@ -510,13 +510,13 @@ void MarkCompactCollector::VerifyMarkbitsAreClean() { |
| } |
| -void MarkCompactCollector::VerifyWeakEmbeddedObjectsInOptimizedCode() { |
| +void MarkCompactCollector::VerifyWeakEmbeddedObjectsInCode() { |
| HeapObjectIterator code_iterator(heap()->code_space()); |
| for (HeapObject* obj = code_iterator.Next(); |
| obj != NULL; |
| obj = code_iterator.Next()) { |
| Code* code = Code::cast(obj); |
| - if (code->kind() != Code::OPTIMIZED_FUNCTION) continue; |
| + if (!code->is_optimized_code() && !code->is_weak_stub()) continue; |
| if (WillBeDeoptimized(code)) continue; |
| code->VerifyEmbeddedObjectsDependency(); |
| } |
| @@ -2720,7 +2720,9 @@ void MarkCompactCollector::ClearAndDeoptimizeDependentCode( |
| ASSERT(entries->is_code_at(i)); |
| Code* code = entries->code_at(i); |
| - if (IsMarked(code) && !code->marked_for_deoptimization()) { |
| + if (code->is_weak_stub()) { |
|
Toon Verwaest
2014/04/03 15:18:36
Also IsMarked(code)?
ulan
2014/04/03 15:40:26
Good catch, done.
|
| + IC::InvalidateMapsAndHandlers(code); |
| + } else if (IsMarked(code) && !code->marked_for_deoptimization()) { |
| code->set_marked_for_deoptimization(true); |
| code->InvalidateEmbeddedObjects(); |
| have_code_to_deoptimize_ = true; |
| @@ -3409,7 +3411,7 @@ void MarkCompactCollector::InvalidateCode(Code* code) { |
| // Return true if the given code is deoptimized or will be deoptimized. |
| bool MarkCompactCollector::WillBeDeoptimized(Code* code) { |
| - return code->marked_for_deoptimization(); |
| + return code->is_optimized_code() && code->marked_for_deoptimization(); |
| } |