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

ruby-changes:6397

From: nobu <ko1@a...>
Date: Mon, 7 Jul 2008 00:36:53 +0900 (JST)
Subject: [ruby-changes:6397] Ruby:r17913 (mvm): * bignum.c (big2str_power_cache): moved to VM specific data.

nobu	2008-07-07 00:35:14 +0900 (Mon, 07 Jul 2008)

  New Revision: 17913

  Modified files:
    branches/mvm/ChangeLog
    branches/mvm/bignum.c
    branches/mvm/common.mk
    branches/mvm/private_object.h

  Log:
    * bignum.c (big2str_power_cache): moved to VM specific data.


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

Index: mvm/ChangeLog
===================================================================
--- mvm/ChangeLog	(revision 17912)
+++ mvm/ChangeLog	(revision 17913)
@@ -1,3 +1,7 @@
+Mon Jul  7 00:35:10 2008  Nobuyoshi Nakada  <nobu@r...>
+
+	* bignum.c (big2str_power_cache): moved to VM specific data.
+
 Mon Jul  7 00:17:21 2008  Nobuyoshi Nakada  <nobu@r...>
 
 	* io.c (struct argf): use defin and defout instead of rb_stdin and
Index: mvm/common.mk
===================================================================
--- mvm/common.mk	(revision 17912)
+++ mvm/common.mk	(revision 17913)
@@ -438,7 +438,7 @@
 array.$(OBJEXT): {$(VPATH)}array.c $(RUBY_H_INCLUDES) \
   {$(VPATH)}st.h {$(VPATH)}util.h
 bignum.$(OBJEXT): {$(VPATH)}bignum.c $(RUBY_H_INCLUDES) \
-  {$(VPATH)}st.h
+  {$(VPATH)}st.h {$(VPATH)}private_object.h
 class.$(OBJEXT): {$(VPATH)}class.c $(RUBY_H_INCLUDES) \
   {$(VPATH)}st.h {$(VPATH)}signal.h {$(VPATH)}node.h
 compar.$(OBJEXT): {$(VPATH)}compar.c $(RUBY_H_INCLUDES) \
Index: mvm/private_object.h
===================================================================
--- mvm/private_object.h	(revision 17912)
+++ mvm/private_object.h	(revision 17913)
@@ -59,6 +59,9 @@
     rb_vmkey_coverages,
 #define rb_vm_coverages (*rb_vm_specific_ptr(rb_vmkey_coverages))
 
+    rb_vmkey_big2str_power_cache,
+#define rb_big2str_power_cache (*rb_vm_specific_ptr(rb_vmkey_big2str_power_cache))
+
     ruby_builtin_object_count,
     ruby_private_object_count = ruby_builtin_object_count - ruby_private_object_vmkey_begin + 1
 };
Index: mvm/bignum.c
===================================================================
--- mvm/bignum.c	(revision 17912)
+++ mvm/bignum.c	(revision 17913)
@@ -10,6 +10,7 @@
 **********************************************************************/
 
 #include "ruby/ruby.h"
+#include "private_object.h"
 
 #include <math.h>
 #include <float.h>
@@ -752,12 +753,16 @@
 #define KARATSUBA_DIGITS (1L<<LOG2_KARATSUBA_DIGITS)
 #define MAX_BIG2STR_TABLE_ENTRIES 64
 
-static VALUE big2str_power_cache[35][MAX_BIG2STR_TABLE_ENTRIES];
+typedef VALUE (*big2str_power_cache_t)[MAX_BIG2STR_TABLE_ENTRIES];
 
 static void
 power_cache_init(void)
 {
     int i, j;
+    VALUE cache_value = rb_ary_new2(35 * MAX_BIG2STR_TABLE_ENTRIES);
+    big2str_power_cache_t big2str_power_cache =
+	(big2str_power_cache_t)RARRAY_PTR(cache_value);
+
     for (i = 0; i < 35; ++i) {
 	for (j = 0; j < MAX_BIG2STR_TABLE_ENTRIES; ++j) {
 	    big2str_power_cache[i][j] = Qnil;
@@ -768,6 +773,10 @@
 static inline VALUE
 power_cache_get_power0(int base, int i)
 {
+    VALUE cache_value = rb_big2str_power_cache;
+    big2str_power_cache_t big2str_power_cache =
+	(big2str_power_cache_t)RARRAY_PTR(cache_value);
+
     if (NIL_P(big2str_power_cache[base - 2][i])) {
 	big2str_power_cache[base - 2][i] =
 	    i == 0 ? rb_big_pow(rb_int2big(base), INT2FIX(KARATSUBA_DIGITS))

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

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