summaryrefslogtreecommitdiffstats
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
commit9c5e5550ec20b2f841efd277a92ff26ebc87cec0 (patch)
tree5d2bbd9c33fb0344da8aae6f8a2f3aed0565a9de /gc.c
parentf4038b58e7c9522f4d22aa2f3bea6840f179c856 (diff)
downloadruby-9c5e5550ec20b2f841efd277a92ff26ebc87cec0.tar.gz
ruby-9c5e5550ec20b2f841efd277a92ff26ebc87cec0.tar.xz
ruby-9c5e5550ec20b2f841efd277a92ff26ebc87cec0.zip
* gc.c, yarvcore.c: fix to mark VM structure on startup.
* yarvcore.h: disable USE_CACHED_VALUE. git-svn-id: http://svn.ruby-lang.org/repos/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 4091a3238..1d14a5547 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);