Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(467)

Unified Diff: src/mark-compact.h

Issue 7983045: Notify collector about lazily deoptimized code objects. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: clear lo from rescan flag, avoid ShouldSweepLazily predicate in preparation Created 9 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/mark-compact.h
diff --git a/src/mark-compact.h b/src/mark-compact.h
index b4ee4e75348b73f5051e94084dbaea0054a044f2..469dd29f199c55a284aa108256458a314adb1bfa 100644
--- a/src/mark-compact.h
+++ b/src/mark-compact.h
@@ -324,6 +324,8 @@ class SlotsBuffer {
void UpdateSlots(Heap* heap);
+ void UpdateSlotsWithFilter(Heap* heap);
+
SlotsBuffer* next() { return next_; }
static int SizeOfChain(SlotsBuffer* buffer) {
@@ -340,9 +342,15 @@ class SlotsBuffer {
return idx_ < kNumberOfElements - 1;
}
- static void UpdateSlotsRecordedIn(Heap* heap, SlotsBuffer* buffer) {
+ static void UpdateSlotsRecordedIn(Heap* heap,
+ SlotsBuffer* buffer,
+ bool code_slots_filtering_required) {
while (buffer != NULL) {
- buffer->UpdateSlots(heap);
+ if (code_slots_filtering_required) {
+ buffer->UpdateSlotsWithFilter(heap);
+ } else {
+ buffer->UpdateSlots(heap);
+ }
buffer = buffer->next();
}
}
@@ -546,10 +554,17 @@ class MarkCompactCollector {
encountered_weak_maps_ = weak_map;
}
+ void InvalidateCode(Code* code);
+
private:
MarkCompactCollector();
~MarkCompactCollector();
+ bool MarkInvalidatedCode();
+ void RemoveDeadInvalidatedCode();
+ void ProcessInvalidatedCode(ObjectVisitor* visitor);
+
+
#ifdef DEBUG
enum CollectorState {
IDLE,
@@ -573,6 +588,8 @@ class MarkCompactCollector {
// candidates.
bool compacting_;
+ bool was_marked_incrementally_;
+
bool collect_maps_;
// A pointer to the current stack-allocated GC tracer object during a full
@@ -762,6 +779,7 @@ class MarkCompactCollector {
Object* encountered_weak_maps_;
List<Page*> evacuation_candidates_;
+ List<Code*> invalidated_code_;
friend class Heap;
};
« no previous file with comments | « src/incremental-marking.cc ('k') | src/mark-compact.cc » ('j') | src/spaces.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698