From 9b2258a54d2ed35e941437016edeff29d236fe34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?= <grubba@grubba.org> Date: Tue, 18 Apr 2000 21:08:59 +0200 Subject: [PATCH] Even more opcodes converted. Rev: src/interpret_functions.h:1.3 --- src/interpret_functions.h | 155 +++++++++++++++++++------------------- 1 file changed, 78 insertions(+), 77 deletions(-) diff --git a/src/interpret_functions.h b/src/interpret_functions.h index 7d606b2662..a34a0493f0 100644 --- a/src/interpret_functions.h +++ b/src/interpret_functions.h @@ -1096,89 +1096,90 @@ BREAK; CASE(F_ADD_INT); push_int(GET_ARG()); f_add(2); break; CASE(F_ADD_NEG_INT); push_int(-GET_ARG()); f_add(2); break; - CASE(F_PUSH_ARRAY); - switch(Pike_sp[-1].type) - { - default: - PIKE_ERROR("@", "Bad argument.\n", Pike_sp, 1); - - case PIKE_T_OBJECT: - if(!Pike_sp[-1].u.object->prog || FIND_LFUN(Pike_sp[-1].u.object->prog,LFUN__VALUES) == -1) - PIKE_ERROR("@", "Bad argument.\n", Pike_sp, 1); - - apply_lfun(Pike_sp[-1].u.object, LFUN__VALUES, 0); - if(Pike_sp[-1].type != PIKE_T_ARRAY) - error("Bad return type from o->_values() in @\n"); - free_svalue(Pike_sp-2); - Pike_sp[-2]=Pike_sp[-1]; - Pike_sp--; - break; +OPCODE0(F_PUSH_ARRAY, "@") + switch(Pike_sp[-1].type) + { + default: + PIKE_ERROR("@", "Bad argument.\n", Pike_sp, 1); + + case PIKE_T_OBJECT: + if(!Pike_sp[-1].u.object->prog || + FIND_LFUN(Pike_sp[-1].u.object->prog,LFUN__VALUES) == -1) + PIKE_ERROR("@", "Bad argument.\n", Pike_sp, 1); + + apply_lfun(Pike_sp[-1].u.object, LFUN__VALUES, 0); + if(Pike_sp[-1].type != PIKE_T_ARRAY) + error("Bad return type from o->_values() in @\n"); + free_svalue(Pike_sp-2); + Pike_sp[-2]=Pike_sp[-1]; + Pike_sp--; + break; - case PIKE_T_ARRAY: break; - } - Pike_sp--; - push_array_items(Pike_sp->u.array); - break; + case PIKE_T_ARRAY: break; + } + Pike_sp--; + push_array_items(Pike_sp->u.array); +BREAK; - CASE(F_LOCAL_LOCAL_INDEX); - { - struct svalue *s=Pike_fp->locals+GET_ARG(); - if(s->type == PIKE_T_STRING) s->subtype=0; - Pike_sp++->type=PIKE_T_INT; - index_no_free(Pike_sp-1,Pike_fp->locals+GET_ARG2(),s); - break; - } +OPCODE2(F_LOCAL_LOCAL_INDEX, "local local index") +{ + struct svalue *s=Pike_fp->locals+arg1; + if(s->type == PIKE_T_STRING) s->subtype=0; + Pike_sp++->type=PIKE_T_INT; + index_no_free(Pike_sp-1,Pike_fp->locals+arg2,s); +} +BREAK; - CASE(F_LOCAL_INDEX); - { - struct svalue tmp,*s=Pike_fp->locals+GET_ARG(); - if(s->type == PIKE_T_STRING) s->subtype=0; - index_no_free(&tmp,Pike_sp-1,s); - free_svalue(Pike_sp-1); - Pike_sp[-1]=tmp; - break; - } +OPCODE1(F_LOCAL_INDEX, "local index") +{ + struct svalue tmp,*s=Pike_fp->locals+arg1(); + if(s->type == PIKE_T_STRING) s->subtype=0; + index_no_free(&tmp,Pike_sp-1,s); + free_svalue(Pike_sp-1); + Pike_sp[-1]=tmp; +} +BREAK; - CASE(F_GLOBAL_LOCAL_INDEX); - { - struct svalue tmp,*s; - low_object_index_no_free(Pike_sp, - Pike_fp->current_object, - GET_ARG() + Pike_fp->context.identifier_level); - Pike_sp++; - s=Pike_fp->locals+GET_ARG2(); - if(s->type == PIKE_T_STRING) s->subtype=0; - index_no_free(&tmp,Pike_sp-1,s); - free_svalue(Pike_sp-1); - Pike_sp[-1]=tmp; - break; - } +OPCODE2(F_GLOBAL_LOCAL_INDEX, "global[local]") +{ + struct svalue tmp,*s; + low_object_index_no_free(Pike_sp, + Pike_fp->current_object, + arg1 + Pike_fp->context.identifier_level); + Pike_sp++; + s=Pike_fp->locals+arg2; + if(s->type == PIKE_T_STRING) s->subtype=0; + index_no_free(&tmp,Pike_sp-1,s); + free_svalue(Pike_sp-1); + Pike_sp[-1]=tmp; +} +BREAK; - CASE(F_LOCAL_ARROW); - { - struct svalue tmp; - tmp.type=PIKE_T_STRING; - tmp.u.string=Pike_fp->context.prog->strings[GET_ARG()]; - tmp.subtype=1; - Pike_sp->type=PIKE_T_INT; - Pike_sp++; - index_no_free(Pike_sp-1,Pike_fp->locals+GET_ARG2() , &tmp); - print_return_value(); - break; - } +OPCODE2(F_LOCAL_ARROW, "local->x") +{ + struct svalue tmp; + tmp.type=PIKE_T_STRING; + tmp.u.string=Pike_fp->context.prog->strings[arg1]; + tmp.subtype=1; + Pike_sp->type=PIKE_T_INT; + Pike_sp++; + index_no_free(Pike_sp-1,Pike_fp->locals+arg2, &tmp); + print_return_value(); +} +BREAK; - CASE(F_ARROW); - { - struct svalue tmp,tmp2; - tmp.type=PIKE_T_STRING; - tmp.u.string=Pike_fp->context.prog->strings[GET_ARG()]; - tmp.subtype=1; - index_no_free(&tmp2, Pike_sp-1, &tmp); - free_svalue(Pike_sp-1); - Pike_sp[-1]=tmp2; - print_return_value(); - break; - } +OPCODE1(F_ARROW, "->x") +{ + struct svalue tmp,tmp2; + tmp.type=PIKE_T_STRING; + tmp.u.string=Pike_fp->context.prog->strings[arg1]; + tmp.subtype=1; + index_no_free(&tmp2, Pike_sp-1, &tmp); + free_svalue(Pike_sp-1); + Pike_sp[-1]=tmp2; + print_return_value(); +} +BREAK; OPCODE1(F_STRING_INDEX, "string index") { -- GitLab