[前][次][番号順一覧][スレッド一覧]

ruby-changes:17666

From: ko1 <ko1@a...>
Date: Wed, 3 Nov 2010 10:01:23 +0900 (JST)
Subject: [ruby-changes:17666] Ruby:r29675 (trunk): * gc.c, vm.c, vm_core.h: remove USE_VALUE_CACHE option.

ko1	2010-11-03 10:01:12 +0900 (Wed, 03 Nov 2010)

  New Revision: 29675

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=29675

  Log:
    * gc.c, vm.c, vm_core.h: remove USE_VALUE_CACHE option.

  Modified files:
    trunk/ChangeLog
    trunk/gc.c
    trunk/vm.c
    trunk/vm_core.h

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 29674)
+++ ChangeLog	(revision 29675)
@@ -1,3 +1,7 @@
+Wed Nov  3 08:58:59 2010  Koichi Sasada  <ko1@a...>
+
+	* gc.c, vm.c, vm_core.h: remove USE_VALUE_CACHE option.
+
 Wed Nov  3 07:47:25 2010  Yukihiro Matsumoto  <matz@r...>
 
 	* lib/irb/ruby-lex.rb (RubyLex#identify_string): parse multiple
Index: vm_core.h
===================================================================
--- vm_core.h	(revision 29674)
+++ vm_core.h	(revision 29675)
@@ -365,9 +365,6 @@
     struct rb_vm_protect_tag *prev;
 };
 
-#define RUBY_VM_VALUE_CACHE_SIZE 0x1000
-#define USE_VALUE_CACHE 0
-
 struct rb_unblock_callback {
     rb_unblock_function_t *func;
     void *arg;
@@ -437,10 +434,6 @@
 
     /* storage */
     st_table *local_storage;
-#if USE_VALUE_CACHE
-    VALUE value_cache[RUBY_VM_VALUE_CACHE_SIZE + 1];
-    VALUE *value_cache_ptr;
-#endif
 
     struct rb_thread_struct *join_list_next;
     struct rb_thread_struct *join_list_head;
Index: gc.c
===================================================================
--- gc.c	(revision 29674)
+++ gc.c	(revision 29675)
@@ -1034,6 +1034,13 @@
     return FALSE;
 }
 
+int
+rb_during_gc(void)
+{
+    rb_objspace_t *objspace = &rb_objspace;
+    return during_gc;
+}
+
 #define RANY(o) ((RVALUE*)(o))
 
 static VALUE
@@ -1061,49 +1068,10 @@
     return obj;
 }
 
-#if USE_VALUE_CACHE
-static VALUE
-rb_fill_value_cache(rb_thread_t *th)
-{
-    rb_objspace_t *objspace = &rb_objspace;
-    int i;
-    VALUE rv;
-
-    /* LOCK */
-    for (i=0; i<RUBY_VM_VALUE_CACHE_SIZE; i++) {
-	VALUE v = rb_newobj_from_heap(objspace);
-
-	th->value_cache[i] = v;
-	RBASIC(v)->flags = FL_MARK;
-    }
-    th->value_cache_ptr = &th->value_cache[0];
-    rv = rb_newobj_from_heap(objspace);
-    /* UNLOCK */
-    return rv;
-}
-#endif
-
-int
-rb_during_gc(void)
-{
-    rb_objspace_t *objspace = &rb_objspace;
-    return during_gc;
-}
-
 VALUE
 rb_newobj(void)
 {
-#if USE_VALUE_CACHE || (defined(ENABLE_VM_OBJSPACE) && ENABLE_VM_OBJSPACE)
-    rb_thread_t *th = GET_THREAD();
-#endif
-#if USE_VALUE_CACHE
-    VALUE v = *th->value_cache_ptr;
-#endif
-#if defined(ENABLE_VM_OBJSPACE) && ENABLE_VM_OBJSPACE
-    rb_objspace_t *objspace = th->vm->objspace;
-#else
     rb_objspace_t *objspace = &rb_objspace;
-#endif
 
     if (during_gc) {
 	dont_gc = 1;
@@ -1111,23 +1079,7 @@
 	rb_bug("object allocation during garbage collection phase");
     }
 
-#if USE_VALUE_CACHE
-    if (v) {
-	RBASIC(v)->flags = 0;
-	th->value_cache_ptr++;
-    }
-    else {
-	v = rb_fill_value_cache(th);
-    }
-
-#if defined(GC_DEBUG)
-    printf("cache index: %d, v: %p, th: %p\n",
-	   th->value_cache_ptr - th->value_cache, v, th);
-#endif
-    return v;
-#else
     return rb_newobj_from_heap(objspace);
-#endif
 }
 
 NODE*
Index: vm.c
===================================================================
--- vm.c	(revision 29674)
+++ vm.c	(revision 29675)
@@ -1709,18 +1709,6 @@
 	    st_free_table(th->local_storage);
 	}
 
-#if USE_VALUE_CACHE
-	{
-	    VALUE *ptr = th->value_cache_ptr;
-	    while (*ptr) {
-		VALUE v = *ptr;
-		RBASIC(v)->flags = 0;
-		RBASIC(v)->klass = 0;
-		ptr++;
-	    }
-	}
-#endif
-
 	if (th->vm && th->vm->main_thread == th) {
 	    RUBY_GC_INFO("main thread\n");
 	}
@@ -1796,10 +1784,6 @@
     th->status = THREAD_RUNNABLE;
     th->errinfo = Qnil;
     th->last_status = Qnil;
-
-#if USE_VALUE_CACHE
-    th->value_cache_ptr = &th->value_cache[0];
-#endif
 }
 
 static void

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]