summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog13
-rw-r--r--bignum.c2
-rw-r--r--complex.c16
-rw-r--r--encoding.c3
-rw-r--r--eval.c3
-rw-r--r--ext/win32ole/win32ole.c4
-rw-r--r--gc.c2
-rw-r--r--include/ruby/ruby.h2
-rw-r--r--io.c2
-rw-r--r--load.c2
-rw-r--r--marshal.c2
-rw-r--r--rational.c10
-rw-r--r--ruby.c2
-rw-r--r--vm.c7
14 files changed, 42 insertions, 28 deletions
diff --git a/ChangeLog b/ChangeLog
index e3c5d3369c..5b4b10968d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+Mon Sep 15 23:52:45 2008 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c, include/ruby/ruby.h: rename rb_register_mark_object()
+ to rb_gc_register_mark_object().
+
+ * eval.c, vm.c: initialize vm->mark_object_ary at
+ Init_top_self().
+
+ * bignum.c, complex.c, encoding.c, ext/win32ole/win32ole.c,
+ io.c, load.c, marshal.c, rational.c, ruby.c, vm.c:
+ use rb_gc_register_mark_object() instead of
+ rb_global_variable() or rb_gc_register_address().
+
Mon Sep 15 23:37:15 2008 Tanaka Akira <akr@fsij.org>
* transcode.c (econv_opts): don't use to_sym.
diff --git a/bignum.c b/bignum.c
index a3f8d25a61..e1bbef83da 100644
--- a/bignum.c
+++ b/bignum.c
@@ -774,7 +774,7 @@ power_cache_get_power0(int base, int i)
big2str_power_cache[base - 2][i] =
i == 0 ? rb_big_pow(rb_int2big(base), INT2FIX(KARATSUBA_DIGITS))
: bigsqr(power_cache_get_power0(base, i - 1));
- rb_global_variable(&big2str_power_cache[base - 2][i]);
+ rb_gc_register_mark_object(big2str_power_cache[base - 2][i]);
}
return big2str_power_cache[base - 2][i];
}
diff --git a/complex.c b/complex.c
index 454bf1351f..1739cc12b1 100644
--- a/complex.c
+++ b/complex.c
@@ -1056,29 +1056,29 @@ make_patterns(void)
if (comp_pat0) return;
comp_pat0 = rb_reg_new(comp_pat0_source, sizeof comp_pat0_source - 1, 0);
- rb_global_variable(&comp_pat0);
+ rb_gc_register_mark_object(comp_pat0);
comp_pat1 = rb_reg_new(comp_pat1_source, sizeof comp_pat1_source - 1, 0);
- rb_global_variable(&comp_pat1);
+ rb_gc_register_mark_object(comp_pat1);
comp_pat2 = rb_reg_new(comp_pat2_source, sizeof comp_pat2_source - 1, 0);
- rb_global_variable(&comp_pat2);
+ rb_gc_register_mark_object(comp_pat2);
a_slash = rb_str_new2("/");
- rb_global_variable(&a_slash);
+ rb_gc_register_mark_object(a_slash);
a_dot_and_an_e = rb_str_new2(".eE");
- rb_global_variable(&a_dot_and_an_e);
+ rb_gc_register_mark_object(a_dot_and_an_e);
null_string = rb_str_new2("");
- rb_global_variable(&null_string);
+ rb_gc_register_mark_object(null_string);
underscores_pat = rb_reg_new(underscores_pat_source,
sizeof underscores_pat_source - 1, 0);
- rb_global_variable(&underscores_pat);
+ rb_gc_register_mark_object(underscores_pat);
an_underscore = rb_str_new2("_");
- rb_global_variable(&an_underscore);
+ rb_gc_register_mark_object(an_underscore);
}
#define id_match rb_intern("match")
diff --git a/encoding.c b/encoding.c
index 40afc0986b..903a0b308b 100644
--- a/encoding.c
+++ b/encoding.c
@@ -1225,10 +1225,11 @@ Init_Encoding(void)
rb_define_singleton_method(rb_cEncoding, "default_external", get_default_external, 0);
rb_define_singleton_method(rb_cEncoding, "locale_charmap", rb_locale_charmap, 0);
- rb_gc_register_address(&rb_encoding_list);
list = rb_ary_new2(enc_table.count);
RBASIC(list)->klass = 0;
rb_encoding_list = list;
+ rb_gc_register_mark_object(list);
+
for (i = 0; i < enc_table.count; ++i) {
rb_ary_push(list, enc_new(enc_table.list[i].enc));
}
diff --git a/eval.c b/eval.c
index 5a78841cdb..038198c895 100644
--- a/eval.c
+++ b/eval.c
@@ -1129,9 +1129,6 @@ rb_f_method_name(void)
void
Init_eval(void)
{
- /* TODO: fix position */
- GET_THREAD()->vm->mark_object_ary = rb_ary_new();
-
rb_define_virtual_variable("$@", errat_getter, errat_setter);
rb_define_virtual_variable("$!", errinfo_getter, 0);
diff --git a/ext/win32ole/win32ole.c b/ext/win32ole/win32ole.c
index 8b20e62b0c..7cffda2aed 100644
--- a/ext/win32ole/win32ole.c
+++ b/ext/win32ole/win32ole.c
@@ -8797,7 +8797,7 @@ void
Init_win32ole()
{
ary_ole_event = rb_ary_new();
- rb_register_mark_object(ary_ole_event);
+ rb_gc_register_mark_object(ary_ole_event);
id_events = rb_intern("events");
com_vtbl.QueryInterface = QueryInterface;
@@ -8816,7 +8816,7 @@ Init_win32ole()
message_filter.MessagePending = mf_MessagePending;
com_hash = Data_Wrap_Struct(rb_cData, rb_mark_hash, st_free_table, st_init_numtable());
- rb_register_mark_object(com_hash);
+ rb_gc_register_mark_object(com_hash);
cWIN32OLE = rb_define_class("WIN32OLE", rb_cObject);
diff --git a/gc.c b/gc.c
index a5e941f1c8..5c6b0851e4 100644
--- a/gc.c
+++ b/gc.c
@@ -722,7 +722,7 @@ rb_gc_disable(void)
VALUE rb_mGC;
void
-rb_register_mark_object(VALUE obj)
+rb_gc_register_mark_object(VALUE obj)
{
VALUE ary = GET_THREAD()->vm->mark_object_ary;
rb_ary_push(ary, obj);
diff --git a/include/ruby/ruby.h b/include/ruby/ruby.h
index d8ae11b204..22717e96f0 100644
--- a/include/ruby/ruby.h
+++ b/include/ruby/ruby.h
@@ -851,7 +851,7 @@ void rb_define_alias(VALUE,const char*,const char*);
void rb_define_attr(VALUE,const char*,int,int);
void rb_global_variable(VALUE*);
-void rb_register_mark_object(VALUE);
+void rb_gc_register_mark_object(VALUE);
void rb_gc_register_address(VALUE*);
void rb_gc_unregister_address(VALUE*);
diff --git a/io.c b/io.c
index 5ac75839ec..ba1d08cd59 100644
--- a/io.c
+++ b/io.c
@@ -8180,8 +8180,8 @@ Init_IO(void)
rb_output_fs = Qnil;
rb_define_hooked_variable("$,", &rb_output_fs, 0, rb_str_setter);
- rb_global_variable(&rb_default_rs);
rb_rs = rb_default_rs = rb_str_new2("\n");
+ rb_gc_register_mark_object(rb_default_rs);
rb_output_rs = Qnil;
OBJ_FREEZE(rb_default_rs); /* avoid modifying RS_default */
rb_define_hooked_variable("$/", &rb_rs, 0, rb_str_setter);
diff --git a/load.c b/load.c
index a6daff43f6..08238a1c9d 100644
--- a/load.c
+++ b/load.c
@@ -698,5 +698,5 @@ Init_load()
rb_define_global_function("autoload?", rb_f_autoload_p, 1);
ruby_dln_librefs = rb_ary_new();
- rb_register_mark_object(ruby_dln_librefs);
+ rb_gc_register_mark_object(ruby_dln_librefs);
}
diff --git a/marshal.c b/marshal.c
index 0cba2f7bf5..352ab443e9 100644
--- a/marshal.c
+++ b/marshal.c
@@ -1723,9 +1723,9 @@ Init_marshal(void)
rb_define_const(rb_mMarshal, "MINOR_VERSION", INT2FIX(MARSHAL_MINOR));
compat_allocator_tbl = st_init_numtable();
- rb_gc_register_address(&compat_allocator_tbl_wrapper);
compat_allocator_tbl_wrapper =
Data_Wrap_Struct(rb_cData, mark_marshal_compat_t, 0, compat_allocator_tbl);
+ rb_gc_register_mark_object(compat_allocator_tbl_wrapper);
}
VALUE
diff --git a/rational.c b/rational.c
index 9dc388a45f..5669a7beb6 100644
--- a/rational.c
+++ b/rational.c
@@ -1252,20 +1252,20 @@ make_patterns(void)
if (rat_pat) return;
rat_pat = rb_reg_new(rat_pat_source, sizeof rat_pat_source - 1, 0);
- rb_global_variable(&rat_pat);
+ rb_gc_register_mark_object(rat_pat);
an_e_pat = rb_reg_new(an_e_pat_source, sizeof an_e_pat_source - 1, 0);
- rb_global_variable(&an_e_pat);
+ rb_gc_register_mark_object(an_e_pat);
a_dot_pat = rb_reg_new(a_dot_pat_source, sizeof a_dot_pat_source - 1, 0);
- rb_global_variable(&a_dot_pat);
+ rb_gc_register_mark_object(a_dot_pat);
underscores_pat = rb_reg_new(underscores_pat_source,
sizeof underscores_pat_source - 1, 0);
- rb_global_variable(&underscores_pat);
+ rb_gc_register_mark_object(underscores_pat);
an_underscore = rb_str_new2("_");
- rb_global_variable(&an_underscore);
+ rb_gc_register_mark_object(an_underscore);
}
#define id_match rb_intern("match")
diff --git a/ruby.c b/ruby.c
index 29ae065039..c773fafc15 100644
--- a/ruby.c
+++ b/ruby.c
@@ -1478,7 +1478,6 @@ ruby_prog_init(void)
rb_define_hooked_variable("$PROGRAM_NAME", &rb_progname, 0, set_arg0);
rb_define_global_const("ARGV", rb_argv);
- rb_global_variable(&rb_argv0);
#ifdef MSDOS
/*
@@ -1535,6 +1534,7 @@ ruby_process_options(int argc, char **argv)
ruby_script(argv[0]); /* for the time being */
rb_argv0 = rb_str_new4(rb_progname);
+ rb_gc_register_mark_object(rb_argv0);
args.argc = argc;
args.argv = argv;
args.opt = cmdline_options_init(&opt);
diff --git a/vm.c b/vm.c
index 71658195b1..7841b43396 100644
--- a/vm.c
+++ b/vm.c
@@ -1820,7 +1820,7 @@ Init_VM(void)
rb_define_method_id(klass, id_core_define_singleton_method, m_core_define_singleton_method, 3);
rb_define_method_id(klass, id_core_set_postexe, m_core_set_postexe, 1);
rb_obj_freeze(fcore);
- rb_global_variable(&rb_mRubyVMFrozenCore);
+ rb_gc_register_mark_object(fcore);
rb_mRubyVMFrozenCore = fcore;
/* ::VM::Env */
@@ -1901,7 +1901,7 @@ Init_VM(void)
vm->living_threads = st_init_numtable();
st_insert(vm->living_threads, th_self, (st_data_t) th->thread_id);
- rb_register_mark_object(iseqval);
+ rb_gc_register_mark_object(iseqval);
GetISeqPtr(iseqval, iseq);
th->cfp->iseq = iseq;
th->cfp->pc = iseq->iseq_encoded;
@@ -1960,6 +1960,9 @@ Init_top_self(void)
vm->top_self = rb_obj_alloc(rb_cObject);
rb_define_singleton_method(rb_vm_top_self(), "to_s", main_to_s, 0);
+
+ /* initialize mark object array */
+ vm->mark_object_ary = rb_ary_new();
}
VALUE *