aboutsummaryrefslogtreecommitdiff
path: root/gc.cpp
diff options
context:
space:
mode:
authorTeddy <ted.sybil@gmail.com>2013-08-14 00:08:30 +0800
committerTeddy <ted.sybil@gmail.com>2013-08-14 00:08:30 +0800
commitc2522466d2fcb5273004f1989b89186cd68001d7 (patch)
tree6c5eed59e9b32e8e82eee2d22f66be3cede6f6d3 /gc.cpp
parentfaab1d57661e4d68823723a8270205c3a3c6e148 (diff)
added gc setting built-insgc_cyc
Diffstat (limited to 'gc.cpp')
-rw-r--r--gc.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/gc.cpp b/gc.cpp
index 85486b6..775463f 100644
--- a/gc.cpp
+++ b/gc.cpp
@@ -14,6 +14,7 @@ static Container *cyc_list[GC_QUEUE_SIZE];
GarbageCollector::GarbageCollector() {
mapping.clear();
pending_list = NULL;
+ resolve_threshold = GC_CYC_THRESHOLD;
}
GarbageCollector::PendingEntry::PendingEntry(
@@ -113,7 +114,7 @@ EvalObj *GarbageCollector::attach(EvalObj *ptr) {
}
void GarbageCollector::cycle_resolve() {
- if (mapping.size() < GC_CYC_THRESHOLD)
+ if (mapping.size() < resolve_threshold)
return;
EvalObjSet visited;
Container **clptr = cyc_list;
@@ -152,3 +153,11 @@ void GarbageCollector::cycle_resolve() {
#endif
force();
}
+
+size_t GarbageCollector::get_remaining() {
+ return mapping.size();
+}
+
+void GarbageCollector::set_resolve_threshold(size_t new_thres) {
+ resolve_threshold = new_thres;
+}