53 #if OPT_CALL_CFUNC_WITHOUT_FRAME
65 int len = cfunc->
argc;
74 if (reg_cfp == th->
cfp) {
76 rb_bug(
"vm_call0_cfunc: passed_ci error (ci: %p, passed_ci: %p)", ci, th->
passed_ci);
81 if (reg_cfp != th->
cfp + 1) {
82 rb_bug(
"vm_call0_cfunc: cfp consistency error");
100 int len = cfunc->
argc;
118 val = (*cfunc->
invoker)(cfunc->
func, recv, argc, argv);
121 rb_bug(
"vm_call0_cfunc_with_frame: cfp consistency error");
164 *reg_cfp->
sp++ = ci->
recv;
165 for (i = 0; i < ci->
argc; i++) {
166 *reg_cfp->
sp++ = argv[i];
218 case OPTIMIZED_METHOD_TYPE_SEND:
221 case OPTIMIZED_METHOD_TYPE_CALL:
247 return vm_call0(th, recv,
id, argc, argv, me, defined_class);
260 rb_bug(
"vm_call_super: should not be reached");
270 return vm_call0(th, recv,
id, argc, argv, me, klass);
294 #define NOEX_OK NOEX_NOSUPER
325 return vm_call0(th, recv, mid, argc, argv, me, defined_class);
369 if (arity < 1) arity = 2;
375 if (!
RTEST(result)) {
424 return vm_call0(th, recv, mid, argc, argv, me, defined_class);
446 return vm_call0(th, recv, mid, argc, argv, me, defined_class);
452 #define type_case(t) case t: return #t;
479 default:
return NULL;
493 "method `%s' called on unexpected immediate object (%p)",
496 flags =
RBASIC(recv)->flags;
497 klass =
RBASIC(recv)->klass;
500 "method `%s' called on terminated object"
509 "method `%s' called on hidden %s object"
511 rb_id2name(mid), typestr, (
void *)recv, flags, klass);
514 "method `%s' called on unexpected %s object"
515 " (%p flags=0x%"PRIxVALUE
" klass=0x%"PRIxVALUE
")",
516 rb_id2name(mid), typestr, (
void *)recv, flags, klass);
519 "method `%s' called on broken T_???" "(0x%02x) object"
520 " (%p flags=0x%"PRIxVALUE
" klass=0x%"PRIxVALUE
")",
521 rb_id2name(mid), type, (
void *)recv, flags, klass);
541 if (oid != idMethodMissing) {
550 VALUE defined_class = klass;
553 defined_class =
RBASIC(defined_class)->klass;
590 VALUE obj,
int call_status));
633 #define NOEX_MISSING 0x80
643 format =
"undefined method `%s' for %s";
661 int last_call_status)
664 const char *format = 0;
666 if (argc == 0 || !
SYMBOL_P(argv[0])) {
673 format =
"private method `%s' called for %s";
676 format =
"protected method `%s' called for %s";
679 format =
"undefined local variable or method `%s' for %s";
683 format =
"super: no superclass method `%s' for %s";
705 if (
id == idMethodMissing) {
724 result =
rb_funcall2(obj, idMethodMissing, argc + 1, nargv);
731 VALUE obj,
int call_status)
787 for (i = 0; i < n; i++) {
788 argv[i] = va_arg(ar,
VALUE);
837 if (!
NIL_P(pass_procval)) {
843 block = &pass_proc->
block;
870 vid = *argv++; argc--;
876 recv, ++argc, --argv);
882 return rb_call0(recv,
id, argc, argv, scope,
self);
965 for (i=0; i<n; i++) {
966 argv[i] = va_arg(args,
VALUE);
996 if (!
NIL_P(blockarg)) {
999 blockptr = &blockproc->
block;
1070 blockptr->
iseq = (
void *)node;
1078 retval = (*it_proc) (data1);
1086 if (cep == escape_ep) {
1102 if (cep == escape_ep) {
1189 volatile int parse_in_eval;
1190 volatile int mild_compile_error;
1203 NODE *cref = cref_arg;
1206 volatile VALUE iseqval;
1211 absolute_path = file;
1214 if (scope !=
Qnil) {
1225 base_block = &env->
block;
1232 base_block = █
1233 base_block->
self =
self;
1241 if ((fname = file) ==
Qundef) {
1247 if (
RTEST(absolute_path))
1257 if (!cref && base_block->
iseq) {
1260 crefval = (
VALUE) cref;
1288 VALUE mesg, errat, bt2;
1343 VALUE src, scope, vfile, vline;
1347 rb_scan_args(argc, argv,
"13", &src, &scope, &vfile, &vline);
1534 block.
self = refinement;
1539 RB_OBJ_WRITE(cref, &cref->nd_refinements, refinements);
1577 return eval_under(klass,
self, argv[0], file, line);
1738 if (tt->
tag == tag) {
1840 volatile VALUE tag = t;
1848 val = (*func)(
tag, data, 1, (
const VALUE *)&tag,
Qnil);
1906 while (cfp->
ep != ep) {