pike.git / src / docode.c

version» Context lines:

pike.git/src/docode.c:876:    ins_f_byte(F_MARK);    if(CAR(n)->token == F_CONSTANT)    {    do_docode(CDR(n),0);    if(CAR(n)->u.sval.type == T_FUNCTION &&    CAR(n)->u.sval.subtype != -1 &&    CAR(n)->u.sval.u.object == &fake_object)    {    ins_f_byte_with_numerical_arg(F_CALL_LFUN, CAR(n)->u.sval.subtype);    }else{ -  tmp1=store_constant(& CAR(n)->u.sval); +  tmp1=store_constant(& CAR(n)->u.sval, +  !(CAR(n)->tree_info & OPT_EXTERNAL_DEPEND));    ins_f_byte(F_MAX_OPCODE + tmp1);    if(n->type == void_type_string) return 0;    }    return 1;    }    else if(CAR(n)->token == F_IDENTIFIER &&    ID_FROM_INT(& fake_program, CAR(n)->u.number)->flags & IDENTIFIER_FUNCTION)    {    do_docode(CDR(n),0);    ins_f_byte_with_numerical_arg(F_CALL_LFUN, CAR(n)->u.number);
pike.git/src/docode.c:902:    struct efun *fun;       tmp=make_shared_string("call_function");    if(!tmp) yyerror("No call_function efun.");    fun=lookup_efun(tmp);    if(!fun) yyerror("No call_function efun.");    free_string(tmp);       do_docode(CAR(n),0);    do_docode(CDR(n),0); -  tmp1=store_constant(& fun->function); +  tmp1=store_constant(& fun->function, 1);    ins_f_byte(tmp1 + F_MAX_OPCODE);    return 1;    }       case F_ARG_LIST:    tmp1=do_docode(CAR(n),flags & ~DO_LVALUE);    tmp1+=do_docode(CDR(n),flags);    return tmp1;      
pike.git/src/docode.c:993:    current_switch_jumptable[e]=current_switch_default;       sp[-1].u.array=order_array(sp[-1].u.array,order);       reorder((void *)(current_switch_jumptable+1),cases,sizeof(INT32)*2,order);    free((char *)order);       for(e=0; e<cases*2+1; e++)    low_set_branch(jumptable[e], current_switch_jumptable[e],tmp2);    -  e=store_constant(sp-1); +  e=store_constant(sp-1,1);    upd_short(tmp1,e);       pop_stack();    free((char *)jumptable);    free((char *)current_switch_jumptable);       current_switch_jumptable = prev_switch_jumptable;    current_switch_default = prev_switch_default;    current_switch_case = prev_switch_case;    current_switch_values_on_stack = prev_switch_values_on_stack ;
pike.git/src/docode.c:1152:    fatal("Internal compiler error, please report this (1).");    return 2;    }else{    tmp1=do_docode(CAR(n), DO_NOT_COPY);    if(do_docode(CDR(n),DO_NOT_COPY) != 1)    fatal("Internal compiler error, please report this (1).");    ins_f_byte(F_INDEX);    if(!(flags & DO_NOT_COPY))    {    while(n && n->token==F_INDEX) n=CAR(n); -  if(n->token==F_CONSTANT) +  if(n->token==F_CONSTANT && !(n->node_info & OPT_EXTERNAL_DEPEND))    ins_f_byte(F_COPY_VALUE);    }    }    return tmp1;       case F_CONSTANT:    switch(n->u.sval.type)    {    case T_INT:    ins_int(n->u.sval.u.integer);
pike.git/src/docode.c:1185:    if(n->u.sval.subtype!=-1)    {    if(n->u.sval.u.object == &fake_object)    {    ins_f_byte_with_numerical_arg(F_LFUN,n->u.sval.subtype);    return 1;    }    }       default: -  tmp1=store_constant(&(n->u.sval)); +  tmp1=store_constant(&(n->u.sval),!(n->tree_info & OPT_EXTERNAL_DEPEND));    ins_f_byte_with_numerical_arg(F_CONSTANT,tmp1);    return 1;       case T_ARRAY:    case T_MAPPING:    case T_LIST: -  tmp1=store_constant(&(n->u.sval)); +  tmp1=store_constant(&(n->u.sval),!(n->tree_info & OPT_EXTERNAL_DEPEND));    ins_f_byte_with_numerical_arg(F_CONSTANT,tmp1); -  if(!(flags & DO_NOT_COPY)) /* copy later */ +  +  /* copy now or later ? */ +  if(!(flags & DO_NOT_COPY) && !(n->tree_info & OPT_EXTERNAL_DEPEND))    ins_f_byte(F_COPY_VALUE);    return 1;       }       case F_LOCAL:    if(flags & DO_LVALUE)    {    ins_f_byte_with_numerical_arg(F_LOCAL_LVALUE,n->u.number);    return 2;