pike.git/
src/
interpret_functions.h
Branch:
Tag:
Non-build tags
All tags
No tags
2000-04-18
2000-04-18 19:08:59 by Henrik Grubbström (Grubba) <grubba@grubba.org>
9b2258a54d2ed35e941437016edeff29d236fe34 (
154
lines) (+
78
/-
76
)
[
Show
|
Annotate
]
Branch:
7.9
Even more opcodes converted.
Rev: src/interpret_functions.h:1.3
1096:
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)
;
+
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)
+
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);
1118:
} Pike_sp--; push_array_items(Pike_sp->u.array);
-
break
;
+
BREAK
;
-
CASE
(F_LOCAL_LOCAL_INDEX)
;
+
OPCODE2
(F_LOCAL_LOCAL_INDEX
, "local local index"
)
{
-
struct svalue *s=Pike_fp->
locals+GET_ARG()
;
+
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+GET_ARG2()
,s);
-
break;
+
index_no_free(Pike_sp-1,Pike_fp->
locals+arg2
,s);
}
-
+
BREAK;
-
CASE
(F_LOCAL_INDEX)
;
+
OPCODE1
(F_LOCAL_INDEX
, "local index"
)
{
-
struct svalue tmp,*s=Pike_fp->
locals+GET_ARG
();
+
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;
+
}
-
+
BREAK;
-
CASE
(F_GLOBAL_LOCAL_INDEX)
;
+
OPCODE2
(F_GLOBAL_LOCAL_INDEX
, "global[local]"
)
{ struct svalue tmp,*s; low_object_index_no_free(Pike_sp, Pike_fp->current_object,
-
GET_ARG()
+ Pike_fp->context.identifier_level);
+
arg1
+ Pike_fp->context.identifier_level);
Pike_sp++;
-
s=Pike_fp->
locals+GET_ARG2()
;
+
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;
+
}
-
+
BREAK;
-
CASE
(F_LOCAL_ARROW)
;
+
OPCODE2
(F_LOCAL_ARROW
, "local->x"
)
{ struct svalue tmp; tmp.type=PIKE_T_STRING;
-
tmp.u.string=Pike_fp->context.prog->strings[
GET_ARG()
];
+
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+GET_ARG2()
, &tmp);
+
index_no_free(Pike_sp-1,Pike_fp->
locals+arg2
, &tmp);
print_return_value();
-
break;
+
}
-
+
BREAK;
-
CASE
(F_ARROW)
;
+
OPCODE1
(F_ARROW
, "->x"
)
{ struct svalue tmp,tmp2; tmp.type=PIKE_T_STRING;
-
tmp.u.string=Pike_fp->context.prog->strings[
GET_ARG()
];
+
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;
+
}
-
+
BREAK;
OPCODE1(F_STRING_INDEX, "string index") {