summaryrefslogtreecommitdiffstats
path: root/src/mark_sweep.cc
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2011-10-11 18:18:07 -0700
committerElliott Hughes <enh@google.com>2011-10-11 18:18:07 -0700
commitc33a32bccc4c66ed82ce3a580b16636399385cb4 (patch)
treeef101d11157784c0724998d39e988a275ed4f69c /src/mark_sweep.cc
parenta465c2034094eeb827ff9204951703dc5f269d60 (diff)
downloadart-c33a32bccc4c66ed82ce3a580b16636399385cb4.zip
art-c33a32bccc4c66ed82ce3a580b16636399385cb4.tar.gz
art-c33a32bccc4c66ed82ce3a580b16636399385cb4.tar.bz2
Sweep the monitor list.
Change-Id: I343261206f8bbabd245b404dd95d532255e5d870
Diffstat (limited to 'src/mark_sweep.cc')
-rw-r--r--src/mark_sweep.cc20
1 files changed, 3 insertions, 17 deletions
diff --git a/src/mark_sweep.cc b/src/mark_sweep.cc
index 05f229d..79597ec 100644
--- a/src/mark_sweep.cc
+++ b/src/mark_sweep.cc
@@ -13,6 +13,7 @@
#include "logging.h"
#include "macros.h"
#include "mark_stack.h"
+#include "monitor.h"
#include "object.h"
#include "runtime.h"
#include "space.h"
@@ -125,24 +126,9 @@ void MarkSweep::SweepJniWeakGlobals() {
}
}
-struct InternTableEntryIsUnmarked : public InternTable::Predicate {
- InternTableEntryIsUnmarked(MarkSweep* ms) : ms_(ms) { }
-
- bool operator()(const String* s) const {
- return !ms_->IsMarked(s);
- }
-
- MarkSweep* ms_;
-};
-
-void MarkSweep::SweepMonitorList() {
- UNIMPLEMENTED(WARNING);
- //dvmSweepMonitorList(&gDvm.monitorList, isUnmarkedObject);
-}
-
void MarkSweep::SweepSystemWeaks() {
- Runtime::Current()->GetInternTable()->RemoveWeakIf(InternTableEntryIsUnmarked(this));
- SweepMonitorList();
+ Runtime::Current()->GetInternTable()->SweepInternTableWeaks(IsMarked, this);
+ Runtime::Current()->GetMonitorList()->SweepMonitorList(IsMarked, this);
SweepJniWeakGlobals();
}