diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2001-01-23 08:08:59 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2001-01-23 08:08:59 +0000 |
commit | 7635ff6a0529ebcad1eb72d8a16af9d0ca26d126 (patch) | |
tree | eabb93a4a0437bc91ac8f87dd0b9af408fdbae79 /gc.c | |
parent | 9d0bba43bb79cf7d37fa93af66f2a70600f73fec (diff) | |
download | ruby-7635ff6a0529ebcad1eb72d8a16af9d0ca26d126.tar.gz |
* gc.c (os_live_obj): do not list terminated object.
* gc.c (os_obj_of): ditto.
* gc.c (rb_gc_mark): support new T_BLKTAG tag.
* gc.c (obj_free): ditto.
* eval.c (new_blktag): creation of new block tag, which holds
destination of global jump and orphan status.
* eval.c (block_pass): break from orphan Proc object will raise a
LocalJumpError exception.
* eval.c (block_pass): behavior consistency with proc_call(). do
not propagate `break'.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1145 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'gc.c')
-rw-r--r-- | gc.c | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -610,6 +610,7 @@ rb_gc_mark(ptr) case T_REGEXP: case T_FLOAT: case T_BIGNUM: + case T_BLKTAG: break; case T_MATCH: @@ -826,6 +827,7 @@ obj_free(obj) case T_FLOAT: case T_VARMAP: + case T_BLKTAG: break; case T_BIGNUM: @@ -1048,6 +1050,7 @@ os_live_obj() case T_CLASS: if (FL_TEST(p, FL_SINGLETON)) continue; default: + if (!p->as.basic.klass) continue; rb_yield((VALUE)p); n++; } @@ -1080,6 +1083,7 @@ os_obj_of(of) case T_CLASS: if (FL_TEST(p, FL_SINGLETON)) continue; default: + if (!p->as.basic.klass) continue; if (rb_obj_is_kind_of((VALUE)p, of)) { rb_yield((VALUE)p); n++; |