summaryrefslogtreecommitdiff
path: root/gc.c
diff options
context:
space:
mode:
authorko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-05-24 02:47:22 +0000
committerko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-05-24 02:47:22 +0000
commit7d200b94f946f0caffa3ea3a72783855e421df32 (patch)
tree5d2bbd9c33fb0344da8aae6f8a2f3aed0565a9de /gc.c
parent7c4ff2d3322753479b3974105e5100b6f4e43001 (diff)
* gc.c, yarvcore.c: fix to mark VM structure on startup.
* yarvcore.h: disable USE_CACHED_VALUE. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12381 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'gc.c')
-rw-r--r--gc.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/gc.c b/gc.c
index 4091a32382..1d14a55475 100644
--- a/gc.c
+++ b/gc.c
@@ -504,7 +504,7 @@ rb_fill_value_cache(rb_thread_t *th)
VALUE
rb_newobj(void)
{
-#if USE_VALUE_CACHE && 1
+#if USE_VALUE_CACHE
rb_thread_t *th = GET_THREAD();
VALUE v = *th->value_cache_ptr;
@@ -1333,6 +1333,8 @@ int rb_setjmp (rb_jmp_buf);
#define GC_NOTIFY 0
+void rb_vm_mark(void *ptr);
+
static int
garbage_collect(void)
{
@@ -1358,8 +1360,7 @@ garbage_collect(void)
init_mark_stack();
- rb_gc_mark(th->vm->self);
- rb_gc_mark(th->vm->mark_object_ary);
+ th->vm->self ? rb_gc_mark(th->vm->self) : rb_vm_mark(th->vm);
if (finalizer_table) {
mark_tbl(finalizer_table, 0);