* 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:
parent
96439f2a4a
commit
21ae9c745a
@ -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
68
eval.c
@ -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);
|
||||
|
1
intern.h
1
intern.h
@ -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 *));
|
||||
|
Loading…
x
Reference in New Issue
Block a user