Index: src/mark-compact.cc |
diff --git a/src/mark-compact.cc b/src/mark-compact.cc |
index 87e4bf9f04fedb3ad25a7859bd9a4e29a3179da1..2c59c886deb7d41bb7bcbb7398092d08f7bb6bb7 100644 |
--- a/src/mark-compact.cc |
+++ b/src/mark-compact.cc |
@@ -1,4 +1,4 @@ |
-// Copyright 2011 the V8 project authors. All rights reserved. |
+// Copyright 2012 the V8 project authors. All rights reserved. |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
@@ -881,7 +881,9 @@ class StaticMarkingVisitor : public StaticVisitorBase { |
static inline void VisitCodeTarget(Heap* heap, RelocInfo* rinfo) { |
ASSERT(RelocInfo::IsCodeTarget(rinfo->rmode())); |
Code* target = Code::GetCodeFromTargetAddress(rinfo->target_address()); |
- if (FLAG_cleanup_code_caches_at_gc && target->is_inline_cache_stub()) { |
+ if (FLAG_cleanup_code_caches_at_gc && target->is_inline_cache_stub() |
+ && (target->ic_state() == MEGAMORPHIC || Serializer::enabled() || |
Vyacheslav Egorov (Chromium)
2012/01/18 14:09:21
store (Serializer::enabled() || heap->isolate()->s
Jakob Kummerow
2012/01/18 15:02:40
Done.
|
+ heap->isolate()->context_exit_happened())) { |
IC::Clear(rinfo->pc()); |
target = Code::GetCodeFromTargetAddress(rinfo->target_address()); |
} else { |
@@ -2180,6 +2182,8 @@ void MarkCompactCollector::AfterMarking() { |
// Clean up dead objects from the runtime profiler. |
heap()->isolate()->runtime_profiler()->RemoveDeadSamples(); |
+ |
+ heap()->isolate()->set_context_exit_happened(false); |
} |