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.
28
1998/01/
29
02
:
47
:
43
hubbe Exp $");
+
RCSID("$Id: docode.c,v 1.
29
1998/01/
30
20
:
04
:
31
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:474:
case F_DIVIDE: case F_MOD: case F_LSH: case F_RSH: case F_XOR: case F_OR: case F_AND: case F_NOT: case F_COMPL: case F_NEGATE:
-
fatal("Optimizer
errror
.\n");
+
fatal("Optimizer
error
.\n");
case F_RANGE: tmp1=do_docode(CAR(n),DO_NOT_COPY); if(do_docode(CDR(n),DO_NOT_COPY)!=2) fatal("Compiler internal error (at %ld).\n",(long)lex.current_line); emit2(n->token); return tmp1; case F_INC: case F_POST_INC:
pike.git/src/docode.c:705:
do_docode(CAR(n),0); do_docode(CDR(n),0); tmp=findstring("call_function"); if(!tmp) yyerror("No call_function efun."); foo=find_module_identifier(tmp); if(!foo || !foo->token==F_CONSTANT) { yyerror("No call_function efun."); }else{
+
if(foo->u.sval.type == T_FUNCTION &&
+
foo->u.sval.subtype == FUNCTION_BUILTIN &&
+
foo->u.sval.u.efun->function == f_call_function)
+
{
+
emit2(F_CALL_FUNCTION);
+
}else{
tmp1=store_constant(& foo->u.sval, 1); emit(F_APPLY, tmp1); }
-
+
}
free_node(foo); return 1; } case F_ARG_LIST: tmp1=do_docode(CAR(n),flags & ~DO_LVALUE); tmp1+=do_docode(CDR(n),flags); return tmp1;