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");