* eval.c (Init_eval): should mark ruby_eval_tree. [ruby-dev:25189]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7548 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
matz 2004-12-13 23:55:04 +00:00
parent 96439f2a4a
commit 21ae9c745a
3 changed files with 17 additions and 56 deletions

View File

@ -1,3 +1,7 @@
Tue Dec 14 08:47:45 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (Init_eval): should mark ruby_eval_tree. [ruby-dev:25189]
Mon Dec 13 18:13:52 2004 Tanaka Akira <akr@m17n.org>
* gc.c (set_stack_end): new function to obtain stack end address.

68
eval.c
View File

@ -5832,32 +5832,6 @@ rb_f_send(argc, argv, recv)
return vid;
}
static VALUE
vafuncall(recv, mid, n, ar)
VALUE recv;
ID mid;
int n;
va_list *ar;
{
VALUE *argv;
if (n > 0) {
long i;
argv = ALLOCA_N(VALUE, n);
for (i=0;i<n;i++) {
argv[i] = va_arg(*ar, VALUE);
}
va_end(*ar);
}
else {
argv = 0;
}
return rb_call(CLASS_OF(recv), recv, mid, n, argv, 1);
}
VALUE
#ifdef HAVE_STDARG_PROTOTYPES
rb_funcall(VALUE recv, ID mid, int n, ...)
@ -5869,42 +5843,25 @@ rb_funcall(recv, mid, n, va_alist)
va_dcl
#endif
{
VALUE *argv;
va_list ar;
va_init_list(ar, n);
return vafuncall(recv, mid, n, &ar);
}
if (n > 0) {
long i;
VALUE
#ifdef HAVE_STDARG_PROTOTYPES
rb_funcall_rescue(VALUE recv, ID mid, int n, ...)
#else
rb_funcall_rescue(recv, mid, n, va_alist)
VALUE recv;
ID mid;
int n;
va_dcl
#endif
{
VALUE result = Qnil; /* OK */
int status;
va_list ar;
argv = ALLOCA_N(VALUE, n);
va_init_list(ar, n);
PUSH_TAG(PROT_NONE);
if ((status = EXEC_TAG()) == 0) {
result = vafuncall(recv, mid, n, &ar);
for (i=0;i<n;i++) {
argv[i] = va_arg(ar, VALUE);
}
va_end(ar);
}
POP_TAG();
switch (status) {
case 0:
return result;
case TAG_RAISE:
return Qundef;
default:
JUMP_TAG(status);
else {
argv = 0;
}
return rb_call(CLASS_OF(recv), recv, mid, n, argv, 1);
}
VALUE
@ -7610,6 +7567,7 @@ Init_eval()
__send__ = rb_intern("__send__");
rb_global_variable((VALUE*)&top_scope);
rb_global_variable((VALUE*)&ruby_eval_tree);
rb_global_variable((VALUE*)&ruby_dyna_vars);
rb_define_virtual_variable("$@", errat_getter, errat_setter);

View File

@ -224,7 +224,6 @@ VALUE rb_thread_main _((void));
VALUE rb_thread_local_aref _((VALUE, ID));
VALUE rb_thread_local_aset _((VALUE, ID, VALUE));
void rb_thread_atfork _((void));
VALUE rb_funcall_rescue __((VALUE, ID, int, ...));
/* file.c */
int eaccess _((const char*, int));
VALUE rb_file_s_expand_path _((int, VALUE *));