43 if (!def)
return Qnil;
60 *reg_cfp->
sp++ = recv;
61 for (i = 0; i <
argc; i++) {
62 *reg_cfp->
sp++ = argv[
i];
76 recv, (
VALUE)blockptr, 0, reg_cfp->
sp, 0, 1);
81 if (reg_cfp != th->
cfp + 1) {
82 rb_bug(
"cfp consistency error - call0");
113 if (!(def = me->
def))
return Qnil;
127 case OPTIMIZED_METHOD_TYPE_SEND:
130 case OPTIMIZED_METHOD_TYPE_CALL: {
144 rb_bug(
"vm_call0: unsupported method type (%d)", def->
type);
155 return vm_call0(th, recv,
id, argc, argv, me);
177 rb_bug(
"vm_call_super: should not be reached");
185 return vm_call0(th, recv,
id, argc, argv, me);
208 #define NOEX_OK NOEX_NOSUPER
236 return vm_call0(th, recv, mid, argc, argv, me);
279 if (arity < 1 || arity > 3) arity = 2;
308 return vm_call0(th, recv, mid, argc, argv, me);
320 #define type_case(t) case t: return #t;
347 default:
return NULL;
361 "method `%s' called on unexpected immediate object (%p)",
364 flags =
RBASIC(recv)->flags;
365 klass =
RBASIC(recv)->klass;
368 "method `%s' called on terminated object"
377 "method `%s' called on hidden %s object"
379 rb_id2name(mid), typestr, (
void *)recv, flags, klass);
382 "method `%s' called on unexpected %s object"
383 " (%p flags=0x%"PRIxVALUE
" klass=0x%"PRIxVALUE
")",
384 rb_id2name(mid), typestr, (
void *)recv, flags, klass);
387 "method `%s' called on broken T_???" "(0x%02x) object"
388 " (%p flags=0x%"PRIxVALUE
" klass=0x%"PRIxVALUE
")",
389 rb_id2name(mid), type, (
void *)recv, flags, klass);
409 if (oid != idMethodMissing) {
418 VALUE defined_class = klass;
421 defined_class =
RBASIC(defined_class)->klass;
460 VALUE obj,
int call_status));
503 #define NOEX_MISSING 0x80
507 int last_call_status)
511 const char *format = 0;
513 if (argc == 0 || !
SYMBOL_P(argv[0])) {
522 format =
"private method `%s' called for %s";
525 format =
"protected method `%s' called for %s";
528 format =
"undefined local variable or method `%s' for %s";
532 format =
"super: no superclass method `%s' for %s";
535 format =
"undefined method `%s' for %s";
573 if (
id == idMethodMissing) {
595 result =
rb_funcall2(obj, idMethodMissing, argc + 1, nargv);
602 VALUE obj,
int call_status)
650 for (i = 0; i < n; i++) {
651 argv[
i] = va_arg(ar,
VALUE);
700 if (!
NIL_P(pass_procval)) {
706 block = &pass_proc->
block;
725 vid = *argv++; argc--;
804 for (i=0; i<n; i++) {
805 argv[
i] = va_arg(args,
VALUE);
891 blockptr->
iseq = (
void *)node;
899 retval = (*it_proc) (data1);
907 if (cdfp == escape_dfp) {
913 while (th->
cfp != cfp) {
915 printf(
"skipped frame: %s\n", vm_frametype_name(th->
cfp));
933 if (cdfp == escape_dfp) {
998 volatile int parse_in_eval;
999 volatile int mild_compile_error;
1011 volatile VALUE iseqval;
1013 if (scope !=
Qnil) {
1017 if (strcmp(file,
"(eval)") == 0 && bind->
filename !=
Qnil) {
1024 "wrong argument type %s (expected Binding)",
1076 if (strcmp(file,
"(eval)") == 0) {
1077 VALUE mesg, errat, bt2;
1132 VALUE src, scope, vfile, vline;
1133 const char *file =
"(eval)";
1136 rb_scan_args(argc, argv,
"13", &src, &scope, &vfile, &vline);
1141 "Insecure: can't modify trusted binding");
1287 const char *file =
"(eval)";
1303 "wrong number of arguments: %s(src) or %s{..}",
1312 return eval_under(klass,
self, argv[0], file, line);
1470 if (tt->
tag == tag) {
1574 th->
cfp = saved_cfp;
1639 if (
NIL_P(method)) {
1640 fprintf(fp,
"\tfrom %s:%d:in unknown method\n",
1644 fprintf(fp,
"\tfrom %s:%d:in `%s'\n",
1722 if (cfp->
lfp != cfp->
dfp) {
1730 while (cfp->
dfp != dfp) {
1772 (cfp->
lfp[0] & 0x02) == 0 &&