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/