pike.git/
src/
interpret_functions.h
Branch:
Tag:
Non-build tags
All tags
No tags
2000-04-20
2000-04-20 14:03:52 by Henrik Grubbström (Grubba) <grubba@grubba.org>
f853acbab0672fb18cb9ab3728ae2b5e49fb163f (
85
lines) (+
56
/-
29
)
[
Show
|
Annotate
]
Branch:
7.9
Converted some more opcodes.
Rev: src/interpret_functions.h:1.13
Rev: src/lex.c:1.75
1:
/*
-
* $Id: interpret_functions.h,v 1.
12
2000/04/20
11
:
49
:
50
grubba Exp $
+
* $Id: interpret_functions.h,v 1.
13
2000/04/20
14
:
03
:
39
grubba Exp $
* * Opcode definitions for the interpreter. */
77:
print_return_value(); BREAK;
-
+
OPCODE1(F_TRAMPOLINE, "trampoline") { struct object *o=low_clone(pike_trampoline_program);
101:
print_return_value(); BREAK;
-
+
OPCODE2(F_EXTERNAL,"external") { struct inherit *inherit;
242:
BREAK;
+
OPCODE1(F_MARK_AND_LOCAL, "mark & local")
+
*(Pike_mark_sp++) = Pike_sp;
+
assign_svalue_no_free(Pike_sp++, Pike_fp->locals + arg1);
+
print_return_value();
+
BREAK;
-
CASE
(F_
MARK_AND_
LOCAL
);
*(Pike_mark_sp++
)
=Pike_sp;
-
CASE(F_LOCAL);
-
assign_svalue_no_free(Pike_sp++,Pike_fp->
locals+GET_ARG(
)
)
;
+
OPCODE1
(F_LOCAL
,
"local"
)
+
assign_svalue_no_free(Pike_sp++,
Pike_fp->
locals + arg1
);
print_return_value();
-
break
;
+
BREAK
;
OPCODE2(F_2_LOCALS, "2 locals") assign_svalue_no_free(Pike_sp++, Pike_fp->locals + arg1);
314:
} BREAK;
-
+
OPCODE2(F_LEXICAL_LOCAL_LVALUE,"&lexical local") { struct pike_frame *f=Pike_fp;
491:
} BREAK;
-
+
OPCODE0(F_ADD_TO_AND_POP, "+= and pop") Pike_sp[0]=Pike_sp[-1]; Pike_sp[-1].type=PIKE_T_INT;
543:
} BREAK;
-
+
OPCODE0(F_INC, "++x") { union anything *u=get_pointer_if_this_type(Pike_sp-2, PIKE_T_INT);
656:
} BREAK;
-
+
OPCODE0(F_POST_DEC, "x--") { union anything *u=get_pointer_if_this_type(Pike_sp-2, PIKE_T_INT);
710:
pop_n_elems(3); BREAK;
-
-
CASE
(F_ASSIGN_LOCAL_AND_POP
);
-
instr=GET_ARG(
)
;
-
free_svalue(Pike_fp->
locals+instr
);
-
Pike_fp->locals[
instr
]=Pike_sp[-1];
+
OPCODE1
(F_ASSIGN_LOCAL_AND_POP
,
"assign
local
and
pop"
)
+
free_svalue(Pike_fp->
locals + arg1
);
+
Pike_fp->locals[
arg1
]
=
Pike_sp[-1];
Pike_sp--;
-
break
;
+
BREAK
;
OPCODE1(F_ASSIGN_GLOBAL, "assign global") {
1117:
COMPARISMENT(F_LT, is_lt(Pike_sp-2,Pike_sp-1)); COMPARISMENT(F_LE,!is_gt(Pike_sp-2,Pike_sp-1));
-
CASE
(F_ADD)
;
f_add(2);
break;
-
CASE(F_SUBTRACT)
;
o_subtract(); break;
-
CASE(F_AND); o_and(); break;
-
CASE(F_OR); o_or(); break;
-
CASE(F_XOR); o_xor(); break;
-
CASE(F_MULTIPLY); o_multiply(); break;
-
CASE(F_DIVIDE); o_divide(); break;
-
CASE(F_MOD); o_mod(); break;
+
OPCODE0
(F_ADD
, "+"
)
+
f_add(2);
+
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;
+
OPCODE0
(F_
SUBTRACT,
"-"
)
+
o
_
subtract
();
+
BREAK
;
-
+
OPCODE0(F_AND, "&")
+
o_and();
+
BREAK;
+
+
OPCODE0(F_OR, "|")
+
o_or();
+
BREAK;
+
+
OPCODE0(F_XOR, "^")
+
o_xor();
+
BREAK;
+
+
OPCODE0(F_MULTIPLY, "*")
+
o_multiply();
+
BREAK;
+
+
OPCODE0(F_DIVIDE, "/")
+
o_divide();
+
BREAK;
+
+
OPCODE0(F_MOD, "%")
+
o_mod();
+
BREAK;
+
+
OPCODE1(F_ADD_INT, "add integer")
+
push_int(arg1);
+
f_add(2);
+
BREAK;
+
+
OPCODE1(F_ADD_NEG_INT, "add -integer")
+
push_int(-arg1);
+
f_add(2);
+
BREAK;
+
OPCODE0(F_PUSH_ARRAY, "@") switch(Pike_sp[-1].type) {