pike.git / src / docode.c

version» Context lines:

pike.git/src/docode.c:592:       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 compilation *c = THIS_COMPILATION;    struct pike_string *n1=make_shared_string(func);
pike.git/src/docode.c:794: Inside #if defined(PIKE_DEBUG)
   get_name_of_type(id->run_time_type),    id->run_time_type);    }   #endif /* PIKE_DEBUG */    f = id->func.gs_info.setter;    if (f == -1) {    yywarning("Variable %S lacks a setter.", id->name);    } else if (!level) {    f += inh->identifier_level;    emit0(F_MARK); +  PUSH_CLEANUP_FRAME(do_pop_mark, 0);    code_expression(val, 0, "RHS");    emit_multi_assign(vals, vars, no+1);    emit1(F_CALL_LFUN, f); -  +  POP_AND_DONT_CLEANUP;    emit0(F_POP_VALUE);    }    }    }    /* FALL_THROUGH */    case F_EXTERNAL:    /* Check that it is in this context */    if(Pike_compiler ->new_program->id == var->u.integer.a)    {    /* Check that it is a variable */
pike.git/src/docode.c:1315: Inside #if defined(PIKE_DEBUG)
   id->identifier_flags,    get_name_of_type(id->run_time_type),    id->run_time_type);    }   #endif /* PIKE_DEBUG */    f = id->func.gs_info.setter;    if (f == -1) {    yywarning("Variable %S lacks a setter.", id->name);    } else if (!level) {    f += inh->identifier_level; +  PUSH_CLEANUP_FRAME(do_pop_mark, 0);    if (flags & DO_POP) {   #ifndef USE_APPLY_N    emit0(F_MARK);   #endif    code_expression(CAR(n), 0, "RHS");    } else {    code_expression(CAR(n), 0, "RHS");   #ifndef USE_APPLY_N    emit0(F_MARK);   #endif    emit0(F_DUP);    }   #ifdef USE_APPLY_N    emit2(F_CALL_LFUN_N, f, 1);   #else    emit1(F_CALL_LFUN, f);   #endif -  +  POP_AND_DONT_CLEANUP;    emit0(F_POP_VALUE);    return !(flags & DO_POP);    }    }    }    /* FALL_THROUGH */    case F_EXTERNAL:    /* Check that it is in this context */    if(Pike_compiler ->new_program->id == CDR(n)->u.integer.a)    {
pike.git/src/docode.c:1426:    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:1488:    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:2646:    emit2(F_TRAMPOLINE,n->u.trampoline.ident,depth);    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:    if( flags & DO_LVALUE )    {    do_docode(CAR(n),DO_LVALUE);    }    else    {    yyerror("[*] not supported here.\n");