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.16.2.
1
1997/06/
25
22
:
46
:
36
hubbe Exp $");
+
RCSID("$Id: docode.c,v 1.16.2.
2
1997/06/
27
06
:
55
:
15
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:248:
emit(F_NUMBER,0); return 1; case F_LVALUE_LIST: case F_LOCAL: case F_GLOBAL: case F_IDENTIFIER: case F_INDEX: case F_ARROW: case F_ARG_LIST:
+
case F_EXTERNAL:
break; } } switch(n->token) {
-
+
case F_EXTERNAL:
+
emit(F_LDA, n->u.integer.a);
+
if(flags & DO_LVALUE)
+
{
+
emit(F_EXTERNAL_LVALUE, n->u.integer.b);
+
return 2;
+
}else{
+
emit(F_EXTERNAL, n->u.integer.b);
+
return 1;
+
}
+
break;
+
case F_UNDEFINED: yyerror("Undefined identifier"); emit(F_NUMBER,0); return 1; case F_PUSH_ARRAY: code_expression(CAR(n), 0, "`@"); emit2(F_PUSH_ARRAY); return -0x7ffffff;
pike.git/src/docode.c:686:
struct pike_string *tmp; struct efun *fun; node *foo; emit2(F_MARK); do_docode(CAR(n),0); do_docode(CDR(n),0); tmp=findstring("call_function"); if(!tmp) yyerror("No call_function efun.");
-
if(!
find_module_identifier(tmp))
+
foo=
find_module_identifier(tmp)
;
+
if(!foo || !foo->token==F_CONSTANT
)
{ yyerror("No call_function efun."); }else{
-
tmp1=store_constant(
sp
-
1
, 1);
-
pop_stack();
+
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; /* Switch: