Commit 99fa8059 authored by vegorov@chromium.org's avatar vegorov@chromium.org

Try enabling (non-incremental) code compaction again.

This time include slot-recording fixes in code flushing that were accidentally omitted from the previous commit.

R=mstarzinger@chromium.org

Review URL: https://chromiumcodereview.appspot.com/9348018

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10625 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 889966a4
...@@ -307,7 +307,7 @@ DEFINE_bool(cleanup_caches_in_maps_at_gc, true, ...@@ -307,7 +307,7 @@ DEFINE_bool(cleanup_caches_in_maps_at_gc, true,
"Flush code caches in maps during mark compact cycle.") "Flush code caches in maps during mark compact cycle.")
DEFINE_bool(never_compact, false, DEFINE_bool(never_compact, false,
"Never perform compaction on full GC - testing only") "Never perform compaction on full GC - testing only")
DEFINE_bool(compact_code_space, false, DEFINE_bool(compact_code_space, true,
"Compact code space on full non-incremental collections") "Compact code space on full non-incremental collections")
DEFINE_bool(cleanup_code_caches_at_gc, true, DEFINE_bool(cleanup_code_caches_at_gc, true,
"Flush inline caches prior to mark compact collection and " "Flush inline caches prior to mark compact collection and "
......
...@@ -809,6 +809,8 @@ class CodeFlusher { ...@@ -809,6 +809,8 @@ class CodeFlusher {
isolate_->heap()->mark_compact_collector()-> isolate_->heap()->mark_compact_collector()->
RecordCodeEntrySlot(slot, target); RecordCodeEntrySlot(slot, target);
RecordSharedFunctionInfoCodeSlot(shared);
candidate = next_candidate; candidate = next_candidate;
} }
...@@ -831,12 +833,21 @@ class CodeFlusher { ...@@ -831,12 +833,21 @@ class CodeFlusher {
candidate->set_code(lazy_compile); candidate->set_code(lazy_compile);
} }
RecordSharedFunctionInfoCodeSlot(candidate);
candidate = next_candidate; candidate = next_candidate;
} }
shared_function_info_candidates_head_ = NULL; shared_function_info_candidates_head_ = NULL;
} }
void RecordSharedFunctionInfoCodeSlot(SharedFunctionInfo* shared) {
Object** slot = HeapObject::RawField(shared,
SharedFunctionInfo::kCodeOffset);
isolate_->heap()->mark_compact_collector()->
RecordSlot(slot, slot, HeapObject::cast(*slot));
}
static JSFunction** GetNextCandidateField(JSFunction* candidate) { static JSFunction** GetNextCandidateField(JSFunction* candidate) {
return reinterpret_cast<JSFunction**>( return reinterpret_cast<JSFunction**>(
candidate->address() + JSFunction::kCodeEntryOffset); candidate->address() + JSFunction::kCodeEntryOffset);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment