pike.git
/
src
/
docode.c
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/src/docode.c:1:
/*\ ||| This file a part of Pike, and is copyright by Fredrik Hubinette ||| Pike is distributed as GPL (General Public License) ||| See the files COPYING and DISCLAIMER for more information. \*/ /**/ #include "global.h"
-
RCSID("$Id: docode.c,v 1.
64
2000/
01
/
04
01
:
32
:
04
grubba
Exp $");
+
RCSID("$Id: docode.c,v 1.
65
2000/
03
/
07
21
:
22
:
08
hubbe
Exp $");
#include "las.h" #include "program.h" #include "language.h" #include "pike_types.h" #include "stralloc.h" #include "interpret.h" #include "constants.h" #include "array.h" #include "pike_macros.h" #include "error.h"
pike.git/src/docode.c:64:
void do_pop(int x) { switch(x) { case 0: return; case 1: emit2(F_POP_VALUE); break; default: emit(F_POP_N_ELEMS,x); break; } }
-
#define DO_CODE_BLOCK(X) do_pop(do_docode((X),DO_NOT_COPY | DO_POP))
;
+
#define DO_CODE_BLOCK(X) do_pop(do_docode((X),DO_NOT_COPY | DO_POP
| DO_DEFER_POP
))
int do_docode(node *n,INT16 flags) { int i; int save_current_line=lex.current_line; if(!n) return 0; lex.current_line=n->line_number; i=do_docode2(check_node_hash(n), flags); lex.current_line=save_current_line;
pike.git/src/docode.c:794:
}else{ /* We might want to put "predef::"+foo->name here /Hubbe */ tmp1=store_constant(& foo->u.sval, 1, foo->name); emit(F_APPLY, tmp1); } } free_node(foo); return 1; }
-
case F_COMMA_EXPR:
+
case F_ARG_LIST:
-
+
case F_COMMA_EXPR:
tmp1=do_docode(CAR(n),flags & ~WANT_LVALUE); tmp1+=do_docode(CDR(n),flags); return tmp1; /* Switch: * So far all switches are implemented with a binsearch lookup. * It stores the case values in the programs area for constants. * It also has a jump-table in the program itself, for every index in * the array of cases, there is 2 indexes in the jumptable, and one extra.