summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--gc.c9
2 files changed, 13 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index a66483aef9..0a6421611d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Fri Nov 14 05:29:46 2014 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: refactoring.
+
+ * gc.c: use GC_ENABLE_INCREMENTAL_MARK instead of USE_RINCGC.
+
+ * gc.c (gc_start): check FORCE_MAJOR_GC.
+
Fri Nov 14 04:51:18 2014 Koichi Sasada <ko1@atdot.net>
* gc.c: Tuning RincGC parameters.
diff --git a/gc.c b/gc.c
index 5a0bb5965a..4d8700817e 100644
--- a/gc.c
+++ b/gc.c
@@ -586,7 +586,7 @@ typedef struct rb_objspace {
size_t error_count;
#endif
} rgengc;
-#if USE_RINCGC
+#if GC_ENABLE_INCREMENTAL_MARK
struct {
size_t pooled_slots;
size_t step_slots;
@@ -5374,7 +5374,6 @@ rb_gc_writebarrier_generational(VALUE a, VALUE b)
}
#if GC_ENABLE_INCREMENTAL_MARK
-
static void
gc_mark_from(rb_objspace_t *objspace, VALUE obj, VALUE parent)
{
@@ -5526,7 +5525,6 @@ rb_gc_unprotect_logging(void *objptr, const char *filename, int line)
st_insert(rgengc_unprotect_logging_table, (st_data_t)ptr, cnt);
}
}
-
#endif /* USE_RGENGC */
void
@@ -5852,9 +5850,12 @@ gc_start(rb_objspace_t *objspace, const int full_mark, const int immediate_mark,
reason |= objspace->rgengc.need_major_gc;
do_full_mark = TRUE;
}
+ else if (RGENGC_FORCE_MAJOR_GC) {
+ reason = GPR_FLAG_MAJOR_BY_FORCE;
+ do_full_mark = TRUE;
+ }
objspace->rgengc.need_major_gc = GPR_FLAG_NONE;
- if (RGENGC_FORCE_MAJOR_GC) objspace->rgengc.need_major_gc = GPR_FLAG_MAJOR_BY_NOFREE;
#endif
}