diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-07-28 01:22:49 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-07-28 01:22:49 +0000 |
commit | 9531aef9eba120e3c75f6ade0931f97c92c7a43b (patch) | |
tree | 43f8665ff11cfe1951fa3956d23ac20e33019bdb /gc.c | |
parent | 7b5b448a1e675015bd341e1303590d154557490c (diff) | |
download | ruby-9531aef9eba120e3c75f6ade0931f97c92c7a43b.tar.gz |
* env.h: remove argv from ruby_frame.
* eval.c (rb_eval): no more copy on write.
* eval.c (assign): ditto.
* eval.c (rb_call0): can receive *rest by specifying negative
argc. (-1 means 0 arg and *rest, -2 means 1 arg and *rest...)
* eval.c (rb_call0): properly set frame's argc counter.
* gc.c (rb_gc_mark_frame): need not to mark frame's argv
* gc.c (run_final): wrong order of data. [ruby-dev:23948]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6708 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'gc.c')
-rw-r--r-- | gc.c | 5 |
1 files changed, 2 insertions, 3 deletions
@@ -1243,7 +1243,6 @@ void rb_gc_mark_frame(frame) struct FRAME *frame; { - mark_locations_array(frame->argv, frame->argc); gc_mark((VALUE)frame->node, 0); } @@ -1767,8 +1766,8 @@ run_final(obj) if (finalizer_table && st_delete(finalizer_table, (st_data_t*)&obj, &table)) { for (i=0; i<RARRAY(table)->len; i++) { VALUE final = RARRAY(table)->ptr[i]; - args[0] = FIX2INT(RARRAY(final)->ptr[0]); - args[2] = RARRAY(final)->ptr[1]; + args[0] = RARRAY(final)->ptr[1]; + args[2] = FIX2INT(RARRAY(final)->ptr[0]); rb_protect((VALUE(*)_((VALUE)))run_single_final, (VALUE)args, &status); } } |