diff options
author | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-06-03 06:35:36 +0000 |
---|---|---|
committer | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-06-03 06:35:36 +0000 |
commit | 4a8544e2be759553f7e73c6304056e86557023f9 (patch) | |
tree | 32259ce8eeb349ab4504e8dcc0aa41c5ffd9d953 | |
parent | 83eaf96a6a1e71a7d3cdf2c43ea0bf3280244206 (diff) |
merge revision(s) 13497:
* gc.c (os_obj_of, os_each_obj): hide objects to be finalized.
[ruby-dev:31810]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_5@16781 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | gc.c | 41 | ||||
-rw-r--r-- | version.h | 2 |
3 files changed, 10 insertions, 38 deletions
@@ -1,3 +1,8 @@ +Tue Jun 3 15:27:11 2008 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * gc.c (os_obj_of, os_each_obj): hide objects to be finalized. + [ruby-dev:31810] + Tue Jun 3 15:05:48 2008 Nobuyoshi Nakada <nobu@ruby-lang.org> * process.c (struct rb_exec_arg): proc should be a VALUE. @@ -1555,38 +1555,6 @@ Init_heap() } static VALUE -os_live_obj() -{ - int i; - int n = 0; - - for (i = 0; i < heaps_used; i++) { - RVALUE *p, *pend; - - p = heaps[i].slot; pend = p + heaps[i].limit; - for (;p < pend; p++) { - if (p->as.basic.flags) { - switch (TYPE(p)) { - case T_ICLASS: - case T_VARMAP: - case T_SCOPE: - case T_NODE: - continue; - case T_CLASS: - if (FL_TEST(p, FL_SINGLETON)) continue; - default: - if (!p->as.basic.klass) continue; - rb_yield((VALUE)p); - n++; - } - } - } - } - - return INT2FIX(n); -} - -static VALUE os_obj_of(of) VALUE of; { @@ -1600,6 +1568,7 @@ os_obj_of(of) for (;p < pend; p++) { if (p->as.basic.flags) { switch (TYPE(p)) { + case T_NONE: case T_ICLASS: case T_VARMAP: case T_SCOPE: @@ -1609,7 +1578,7 @@ os_obj_of(of) if (FL_TEST(p, FL_SINGLETON)) continue; default: if (!p->as.basic.klass) continue; - if (rb_obj_is_kind_of((VALUE)p, of)) { + if (!of || rb_obj_is_kind_of((VALUE)p, of)) { rb_yield((VALUE)p); n++; } @@ -1663,11 +1632,9 @@ os_each_obj(argc, argv) rb_secure(4); if (rb_scan_args(argc, argv, "01", &of) == 0) { - return os_live_obj(); - } - else { - return os_obj_of(of); + of = 0; } + return os_obj_of(of); } static VALUE finalizers; @@ -2,7 +2,7 @@ #define RUBY_RELEASE_DATE "2008-06-03" #define RUBY_VERSION_CODE 185 #define RUBY_RELEASE_CODE 20080603 -#define RUBY_PATCHLEVEL 122 +#define RUBY_PATCHLEVEL 123 #define RUBY_VERSION_MAJOR 1 #define RUBY_VERSION_MINOR 8 |