summaryrefslogtreecommitdiff
path: root/gc.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-07-28 01:22:49 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-07-28 01:22:49 +0000
commit9531aef9eba120e3c75f6ade0931f97c92c7a43b (patch)
tree43f8665ff11cfe1951fa3956d23ac20e33019bdb /gc.c
parent7b5b448a1e675015bd341e1303590d154557490c (diff)
* 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.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/gc.c b/gc.c
index 13a123fc16..dfc98622f6 100644
--- a/gc.c
+++ b/gc.c
@@ -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);
}
}