pike.git / src / docode.c

version» Context lines:

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 */