pike.git
/
src
/
docode.c
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/src/docode.c:1:
/* || This file is part of Pike. For copyright information see COPYRIGHT. || Pike is distributed under GPL, LGPL and MPL. See the file COPYING || for more information.
-
||
$Id: docode.c,v 1.192 2008/01/28 18:43:14 grubba Exp $
+
||
$Id$
*/ #include "global.h" #include "las.h" #include "program.h" #include "pike_types.h" #include "stralloc.h" #include "interpret.h" #include "constants.h" #include "array.h"
pike.git/src/docode.c:554:
case F_AUTO_MAP_MARKER: { int depth=0; while(n->token == F_AUTO_MAP_MARKER) { n=CAR(n); depth++; } emit0(F_MARK);
+
PUSH_CLEANUP_FRAME(do_pop_mark, 0);
code_expression(n, 0, "[*]"); emit1(F_NUMBER, depth); emit_apply_builtin("__builtin.automap_marker");
-
+
POP_AND_DONT_CLEANUP;
return 1; } } } static void emit_builtin_svalue(char *func) { INT32 tmp1; struct pike_string *n1=make_shared_string(func); node *n=find_module_identifier(n1,0);
pike.git/src/docode.c:1399:
emit2(F_REARRANGE,1,2); ret++; flags|=DO_POP; } #ifdef PIKE_DEBUG if(tmp1 != 2) Pike_fatal("HELP! FATAL INTERNAL COMPILER ERROR (1)\n"); #endif
+
PUSH_CLEANUP_FRAME(do_pop_mark, 0);
emit0(F_MARK);
-
+
PUSH_CLEANUP_FRAME(do_pop_mark, 0);
emit0(F_MARK); emit0(F_LTOSVAL); emit1(F_NUMBER, depth); emit_apply_builtin("__builtin.automap_marker");
-
+
POP_AND_DONT_CLEANUP;
emit_builtin_svalue("`+"); emit2(F_REARRANGE,1,1); emit1(F_NUMBER, 1); emit_apply_builtin("__automap__");
-
+
POP_AND_DONT_CLEANUP;
if(flags & DO_POP) { emit0(F_ASSIGN_AND_POP); }else{ emit0(F_ASSIGN); ret++; } return ret; }else{
pike.git/src/docode.c:1461:
emit2(F_REARRANGE,1,2); ret++; flags|=DO_POP; } #ifdef PIKE_DEBUG if(tmp1 != 2) Pike_fatal("HELP! FATAL INTERNAL COMPILER ERROR (1)\n"); #endif
+
PUSH_CLEANUP_FRAME(do_pop_mark, 0);
emit0(F_MARK);
-
+
PUSH_CLEANUP_FRAME(do_pop_mark, 0);
emit0(F_MARK); emit0(F_LTOSVAL); emit1(F_NUMBER, depth); emit_apply_builtin("__builtin.automap_marker");
-
+
POP_AND_DONT_CLEANUP;
emit_builtin_svalue("`-"); emit2(F_REARRANGE,1,1); emit1(F_NUMBER, 1); emit_apply_builtin("__automap__");
-
+
POP_AND_DONT_CLEANUP;
if(flags & DO_POP) { emit0(F_ASSIGN_AND_POP); }else{ emit0(F_ASSIGN); ret++; } return ret; }else{
pike.git/src/docode.c:2601:
} return 1; } case F_VAL_LVAL: ret = do_docode(CAR(n),flags); return ret + do_docode(CDR(n), flags | DO_LVALUE); case F_AUTO_MAP: emit0(F_MARK);
+
PUSH_CLEANUP_FRAME(do_pop_mark, 0);
code_expression(CAR(n), 0, "automap function"); do_encode_automap_arg_list(CDR(n),0); emit_apply_builtin("__automap__");
-
+
POP_AND_DONT_CLEANUP;
return 1; case F_AUTO_MAP_MARKER: yyerror("[*] not supported here.\n"); emit0(F_CONST0); return 1; default: Pike_fatal("Infernal compiler error (unknown parse-tree-token %d).\n", n->token); return 0; /* make gcc happy */