Reviewers: Hannes Payer,
Description:
Fix code flusher disabling while marking incrementally.
This fixes a corner case where the code flusher is disabled while the
incremental marker is still running. This can happen when the debugger
is loaded and a scavenge is triggered. Make sure that all flushing
decisions are revisited after the candidates lists are evicted.
[email protected]
BUG=chromium:173458,chromium:168582
Please review this at https://codereview.chromium.org/12217108/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files:
M src/mark-compact.cc
Index: src/mark-compact.cc
diff --git a/src/mark-compact.cc b/src/mark-compact.cc
index
869b318f547572257b66beb0df92c9e32b2ed814..6ce308176795b3967d9d26e5f84459fdb7b645bd
100644
--- a/src/mark-compact.cc
+++ b/src/mark-compact.cc
@@ -1104,17 +1104,14 @@ void CodeFlusher::EvictCandidate(JSFunction*
function) {
void CodeFlusher::EvictJSFunctionCandidates() {
- Object* undefined = isolate_->heap()->undefined_value();
-
JSFunction* candidate = jsfunction_candidates_head_;
JSFunction* next_candidate;
while (candidate != NULL) {
next_candidate = GetNextCandidate(candidate);
- ClearNextCandidate(candidate, undefined);
+ EvictCandidate(candidate);
candidate = next_candidate;
}
-
- jsfunction_candidates_head_ = NULL;
+ ASSERT(jsfunction_candidates_head_ == NULL);
}
@@ -1123,11 +1120,10 @@ void
CodeFlusher::EvictSharedFunctionInfoCandidates() {
SharedFunctionInfo* next_candidate;
while (candidate != NULL) {
next_candidate = GetNextCandidate(candidate);
- ClearNextCandidate(candidate);
+ EvictCandidate(candidate);
candidate = next_candidate;
}
-
- shared_function_info_candidates_head_ = NULL;
+ ASSERT(shared_function_info_candidates_head_ == NULL);
}
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.