pike.git / src / docode.c

version» Context lines:

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.135 2001/09/29 08:47:03 hubbe Exp $"); + RCSID("$Id$");   #include "las.h"   #include "program.h"   #include "pike_types.h"   #include "stralloc.h"   #include "interpret.h"   #include "constants.h"   #include "array.h"   #include "pike_macros.h"   #include "pike_error.h"   #include "pike_memory.h"
pike.git/src/docode.c:506:       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:1015:    emit2(F_REARRANGE,1,2);    ret++;    flags|=DO_POP;    }      #ifdef PIKE_DEBUG    if(tmp1 != 2)    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:1077:    emit2(F_REARRANGE,1,2);    ret++;    flags|=DO_POP;    }      #ifdef PIKE_DEBUG    if(tmp1 != 2)    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:2143:    }    }    return 1;       case F_VAL_LVAL:    return do_docode(CAR(n),flags) +    do_docode(CDR(n), (INT16)(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:    fatal("Infernal compiler error (unknown parse-tree-token %d).\n", n->token);    return 0; /* make gcc happy */