Add sanity check to CodeFlusher::AddCandidate.
authormstarzinger@chromium.org <mstarzinger@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Tue, 15 Jan 2013 10:00:48 +0000 (10:00 +0000)
committermstarzinger@chromium.org <mstarzinger@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Tue, 15 Jan 2013 10:00:48 +0000 (10:00 +0000)
R=hpayer@chromium.org
BUG=chromium:169209

Review URL: https://codereview.chromium.org/11887031

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13380 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/mark-compact.cc
src/mark-compact.h

index 2c6d9d1c93687b96bfa4144638374982289c199d..9cfe5e04821ae38592dfa77edcc03e48fe787b69 100644 (file)
@@ -933,6 +933,16 @@ void CodeFlusher::ProcessSharedFunctionInfoCandidates() {
 }
 
 
+bool CodeFlusher::ContainsCandidate(SharedFunctionInfo* shared_info) {
+  SharedFunctionInfo* candidate = shared_function_info_candidates_head_;
+  while (candidate != NULL) {
+    if (candidate == shared_info) return true;
+    candidate = GetNextCandidate(candidate);
+  }
+  return false;
+}
+
+
 void CodeFlusher::EvictCandidate(SharedFunctionInfo* shared_info) {
   // The function is no longer a candidate, make sure it gets visited
   // again so that previous flushing decisions are revisited.
index 8821c3df30a3b00d3b9139410b7022547604fbd4..b34be6b91daabf696440b607e23a8c7532859130 100644 (file)
@@ -423,6 +423,10 @@ class CodeFlusher {
     if (GetNextCandidate(shared_info) == NULL) {
       SetNextCandidate(shared_info, shared_function_info_candidates_head_);
       shared_function_info_candidates_head_ = shared_info;
+    } else {
+      // TODO(mstarzinger): Active in release mode to flush out problems.
+      // Should be turned back into an ASSERT or removed completely.
+      CHECK(ContainsCandidate(shared_info));
     }
   }
 
@@ -434,6 +438,8 @@ class CodeFlusher {
     }
   }
 
+  bool ContainsCandidate(SharedFunctionInfo* shared_info);
+
   void EvictCandidate(SharedFunctionInfo* shared_info);
   void EvictCandidate(JSFunction* function);