pike.git / src / interpret_functions.h

version» Context lines:

pike.git/src/interpret_functions.h:2007:      OPCODE1(F_SIZEOF_LOCAL, "sizeof local", I_UPDATE_SP, {    push_int(pike_sizeof(Pike_fp->locals+arg1));   });      OPCODE2_ALIAS(F_SSCANF, "sscanf", I_UPDATE_SP, o_sscanf);      #define MKAPPLY(OP,OPCODE,NAME,TYPE, ARG2, ARG3) \    PIKE_CONCAT(OP,_JUMP)(PIKE_CONCAT(F_,OPCODE),NAME, \    I_UPDATE_ALL, { \ +  LOCAL_VAR(PIKE_OPCODE_T *pc); \   JUMP_SET_TO_PC_AT_NEXT (Pike_fp->return_addr); \ - if(low_mega_apply(TYPE,DO_NOT_WARN((INT32)(Pike_sp - *--Pike_mark_sp)), \ -  ARG2, ARG3)) \ + if((pc=low_mega_apply(TYPE,DO_NOT_WARN((INT32)(Pike_sp - *--Pike_mark_sp)), \ +  ARG2, ARG3))) \   { \    Pike_fp->flags |= PIKE_FRAME_RETURN_INTERNAL; \ -  DO_JUMP_TO(Pike_fp->pc); \ +  DO_JUMP_TO(pc); \   } \   else { \    DO_JUMP_TO_NEXT; \   } \   }); \    \    PIKE_CONCAT(OP,_JUMP)(PIKE_CONCAT3(F_,OPCODE,_AND_POP),NAME " & pop", \    I_UPDATE_ALL, { \ -  +  LOCAL_VAR(PIKE_OPCODE_T *pc); \    JUMP_SET_TO_PC_AT_NEXT (Pike_fp->return_addr); \ -  if(low_mega_apply(TYPE, DO_NOT_WARN((INT32)(Pike_sp - *--Pike_mark_sp)), \ -  ARG2, ARG3)) \ +  if((pc=low_mega_apply(TYPE, DO_NOT_WARN((INT32)(Pike_sp - *--Pike_mark_sp)), \ +  ARG2, ARG3))) \    { \    Pike_fp->flags |= PIKE_FRAME_RETURN_INTERNAL | PIKE_FRAME_RETURN_POP; \ -  DO_JUMP_TO(Pike_fp->pc); \ +  DO_JUMP_TO(pc); \    }else{ \    pop_stack(); \    DO_JUMP_TO_NEXT; \    } \   }); \    \   PIKE_CONCAT(OP,_RETURN)(PIKE_CONCAT3(F_,OPCODE,_AND_RETURN), \    NAME " & return", \    I_UPDATE_ALL, { \ -  if(low_mega_apply(TYPE,DO_NOT_WARN((INT32)(Pike_sp - *--Pike_mark_sp)), \ -  ARG2,ARG3)) \ +  LOCAL_VAR(PIKE_OPCODE_T *pc); \ +  if((pc = low_mega_apply(TYPE,DO_NOT_WARN((INT32)(Pike_sp - *--Pike_mark_sp)), \ +  ARG2,ARG3))) \    { \ -  PIKE_OPCODE_T *addr = Pike_fp->pc; \ +     DO_IF_DEBUG(Pike_fp->next->pc=0); \    unlink_previous_frame(); \ -  DO_JUMP_TO(addr); \ +  DO_JUMP_TO(pc); \    }else{ \    DO_DUMB_RETURN; \    } \   })         #define MKAPPLY2(OP,OPCODE,NAME,TYPE, ARG2, ARG3) \    \   MKAPPLY(OP,OPCODE,NAME,TYPE, ARG2, ARG3); \    \   PIKE_CONCAT(OP,_JUMP)(PIKE_CONCAT(F_MARK_,OPCODE),"mark, " NAME, \    I_UPDATE_ALL, { \ -  +  LOCAL_VAR(PIKE_OPCODE_T *pc); \    JUMP_SET_TO_PC_AT_NEXT (Pike_fp->return_addr); \ -  if(low_mega_apply(TYPE, 0, \ -  ARG2, ARG3)) \ +  if((pc=low_mega_apply(TYPE, 0, \ +  ARG2, ARG3))) \    { \    Pike_fp->flags |= PIKE_FRAME_RETURN_INTERNAL; \ -  DO_JUMP_TO(Pike_fp->pc); \ +  DO_JUMP_TO(pc); \    } \    else { \    DO_JUMP_TO_NEXT; \    } \   }); \    \   PIKE_CONCAT(OP,_JUMP)(PIKE_CONCAT3(F_MARK_,OPCODE,_AND_POP), \    "mark, " NAME " & pop", \    I_UPDATE_ALL, { \ -  +  LOCAL_VAR(PIKE_OPCODE_T *pc); \    JUMP_SET_TO_PC_AT_NEXT (Pike_fp->return_addr); \ -  if(low_mega_apply(TYPE, 0, \ -  ARG2, ARG3)) \ +  if((pc=low_mega_apply(TYPE, 0, \ +  ARG2, ARG3))) \    { \    Pike_fp->flags |= PIKE_FRAME_RETURN_INTERNAL | PIKE_FRAME_RETURN_POP; \ -  DO_JUMP_TO(Pike_fp->pc); \ +  DO_JUMP_TO(pc); \    }else{ \    pop_stack(); \    DO_JUMP_TO_NEXT; \    } \   }); \    \   PIKE_CONCAT(OP,_RETURN)(PIKE_CONCAT3(F_MARK_,OPCODE,_AND_RETURN), \    "mark, " NAME " & return", \    I_UPDATE_ALL, { \ -  if(low_mega_apply(TYPE, 0, \ -  ARG2,ARG3)) \ +  LOCAL_VAR(PIKE_OPCODE_T *pc); \ +  if((pc=low_mega_apply(TYPE, 0, \ +  ARG2,ARG3))) \    { \ -  PIKE_OPCODE_T *addr = Pike_fp->pc; \ +     DO_IF_DEBUG(Pike_fp->next->pc=0); \    unlink_previous_frame(); \ -  DO_JUMP_TO(addr); \ +  DO_JUMP_TO(pc); \    }else{ \    DO_DUMB_RETURN; \    } \   })         OPCODE1_JUMP(F_CALL_LFUN , "call lfun", I_UPDATE_ALL, { -  +  LOCAL_VAR(PIKE_OPCODE_T *addr);    JUMP_SET_TO_PC_AT_NEXT (Pike_fp->return_addr); -  if(lower_mega_apply(DO_NOT_WARN((INT32)(Pike_sp - *--Pike_mark_sp)), +  if((addr = lower_mega_apply(DO_NOT_WARN((INT32)(Pike_sp - *--Pike_mark_sp)),    Pike_fp->current_object, -  (arg1+Pike_fp->context->identifier_level) )) +  (arg1+Pike_fp->context->identifier_level) )))    {    Pike_fp->flags |= PIKE_FRAME_RETURN_INTERNAL; -  DO_JUMP_TO(Pike_fp->pc); +  DO_JUMP_TO(addr);    }    else    {    DO_JUMP_TO_NEXT;    }    });      OPCODE1_JUMP(F_CALL_LFUN_AND_POP, "call lfun & pop", I_UPDATE_ALL, { -  +  LOCAL_VAR(PIKE_OPCODE_T *addr);    JUMP_SET_TO_PC_AT_NEXT (Pike_fp->return_addr); -  -  if(lower_mega_apply(DO_NOT_WARN((INT32)(Pike_sp - *--Pike_mark_sp)), +  if((addr = lower_mega_apply(DO_NOT_WARN((INT32)(Pike_sp - *--Pike_mark_sp)),    Pike_fp->current_object, -  (arg1+Pike_fp->context->identifier_level))) +  (arg1+Pike_fp->context->identifier_level))))    {    Pike_fp->flags |= PIKE_FRAME_RETURN_INTERNAL | PIKE_FRAME_RETURN_POP; -  DO_JUMP_TO(Pike_fp->pc); +  DO_JUMP_TO(addr);    }    else    {    pop_stack();    DO_JUMP_TO_NEXT;    }    });      OPCODE1_RETURN(F_CALL_LFUN_AND_RETURN , "call lfun & return", I_UPDATE_ALL, { -  if(lower_mega_apply(DO_NOT_WARN((INT32)(Pike_sp - *--Pike_mark_sp)), +  LOCAL_VAR(PIKE_OPCODE_T *addr); +  if((addr = lower_mega_apply(DO_NOT_WARN((INT32)(Pike_sp - *--Pike_mark_sp)),    Pike_fp->current_object, -  (arg1+Pike_fp->context->identifier_level))) +  (arg1+Pike_fp->context->identifier_level))))    { -  PIKE_OPCODE_T *addr = Pike_fp->pc; +     DO_IF_DEBUG(Pike_fp->next->pc=0);    unlink_previous_frame();    DO_JUMP_TO(addr);    }else{    DO_DUMB_RETURN;    }    });      OPCODE1_JUMP(F_MARK_CALL_LFUN, "mark, call lfun" , I_UPDATE_ALL, { -  +  LOCAL_VAR(PIKE_OPCODE_T *p);    JUMP_SET_TO_PC_AT_NEXT (Pike_fp->return_addr); -  if(lower_mega_apply(0, Pike_fp->current_object, -  (arg1+Pike_fp->context->identifier_level))) { +  if((p = lower_mega_apply(0, Pike_fp->current_object, +  (arg1+Pike_fp->context->identifier_level)))) {    Pike_fp->flags |= PIKE_FRAME_RETURN_INTERNAL; -  DO_JUMP_TO(Pike_fp->pc); +  DO_JUMP_TO(p);    } else {    DO_JUMP_TO_NEXT;    }    });      OPCODE1_JUMP( F_MARK_CALL_LFUN_AND_POP , "mark, call lfun & pop", I_UPDATE_ALL, { -  +  LOCAL_VAR(PIKE_OPCODE_T *p);    JUMP_SET_TO_PC_AT_NEXT (Pike_fp->return_addr); -  if(lower_mega_apply(0, Pike_fp->current_object, -  (arg1+Pike_fp->context->identifier_level) )) +  if((p = lower_mega_apply(0, Pike_fp->current_object, +  (arg1+Pike_fp->context->identifier_level) )))    {    Pike_fp->flags |= PIKE_FRAME_RETURN_INTERNAL | PIKE_FRAME_RETURN_POP; -  DO_JUMP_TO(Pike_fp->pc); +  DO_JUMP_TO(p);    }    else    {    pop_stack();    DO_JUMP_TO_NEXT;    }    });      OPCODE1_RETURN(F_MARK_CALL_LFUN_AND_RETURN , "mark, call lfun & return", I_UPDATE_ALL, { -  if(lower_mega_apply(0, Pike_fp->current_object, -  (arg1+Pike_fp->context->identifier_level))) +  LOCAL_VAR(PIKE_OPCODE_T *addr); +  if((addr = lower_mega_apply(0, Pike_fp->current_object, +  (arg1+Pike_fp->context->identifier_level))))    { -  PIKE_OPCODE_T *addr = Pike_fp->pc; +     DO_IF_DEBUG(Pike_fp->next->pc=0);    unlink_previous_frame();    DO_JUMP_TO(addr);    }    else    {    DO_DUMB_RETURN;    }    });   
pike.git/src/interpret_functions.h:2205:    if(TYPEOF(*s) == T_OBJECT)    {    LOCAL_VAR(struct object *o);    LOCAL_VAR(struct program *p);    o = s->u.object;    if((p=o->prog))    {    p = p->inherits[SUBTYPEOF(*s)].prog;    if(FIND_LFUN(p, LFUN_ARROW) == -1)    { +  PIKE_OPCODE_T *addr;    int fun;    fun=find_shared_string_identifier(Pike_fp->context->prog->strings[arg1],    p);    if(fun >= 0)    {    fun += o->prog->inherits[SUBTYPEOF(*s)].identifier_level; -  if(lower_mega_apply(args-1, o, fun)) +  if((addr = lower_mega_apply(args-1, o, fun)))    {    Pike_fp->save_sp--;    Pike_fp->flags |= PIKE_FRAME_RETURN_INTERNAL; -  DO_JUMP_TO(Pike_fp->pc); +  DO_JUMP_TO(addr);    }    stack_pop_keep_top();    DO_JUMP_TO_NEXT;    }    }    }    }       {    LOCAL_VAR(struct svalue tmp);    LOCAL_VAR(struct svalue tmp2); -  LOCAL_VAR(void *p); +  LOCAL_VAR(PIKE_OPCODE_T *p);    SET_SVAL(tmp, PIKE_T_STRING, 1, string,    Pike_fp->context->prog->strings[arg1]);       index_no_free(&tmp2, s, &tmp);    free_svalue(s);    move_svalue (s, &tmp2);    print_return_value();    -  if(p = low_mega_apply(APPLY_STACK, args, 0, 0)) +  if((p = low_mega_apply(APPLY_STACK, args, 0, 0)))    {    Pike_fp->flags |= PIKE_FRAME_RETURN_INTERNAL;    DO_JUMP_TO(p);    }    else {    DO_JUMP_TO_NEXT;    }    }   });   
pike.git/src/interpret_functions.h:2263:    {    LOCAL_VAR(struct object *o);    LOCAL_VAR(struct program *p);    o = s->u.object;    if((p=o->prog))    {    p = p->inherits[SUBTYPEOF(*s)].prog;    if(FIND_LFUN(p, LFUN_ARROW) == -1)    {    int fun; +  PIKE_OPCODE_T *addr;    fun=find_shared_string_identifier(Pike_fp->context->prog->strings[arg1],    p);    if(fun >= 0)    {    fun += o->prog->inherits[SUBTYPEOF(*s)].identifier_level; -  if(lower_mega_apply(args-1, o, fun)) +  if((addr = lower_mega_apply(args-1, o, fun)))    {    Pike_fp->save_sp--;    Pike_fp->flags |=    PIKE_FRAME_RETURN_INTERNAL |    PIKE_FRAME_RETURN_POP; -  DO_JUMP_TO(Pike_fp->pc); +  DO_JUMP_TO(addr);    }    pop_2_elems();    DO_JUMP_TO_NEXT;    }    }    }    }       {    LOCAL_VAR(struct svalue tmp);    LOCAL_VAR(struct svalue tmp2); -  LOCAL_VAR(void *p); +  LOCAL_VAR(PIKE_OPCODE_T *p);       SET_SVAL(tmp, PIKE_T_STRING, 1, string,    Pike_fp->context->prog->strings[arg1]);       index_no_free(&tmp2, s, &tmp);    free_svalue(s);    move_svalue (s, &tmp2);    print_return_value();    -  if(p = low_mega_apply(APPLY_STACK, args, 0, 0)) +  if((p = low_mega_apply(APPLY_STACK, args, 0, 0)))    {    Pike_fp->flags |= PIKE_FRAME_RETURN_INTERNAL | PIKE_FRAME_RETURN_POP;    DO_JUMP_TO(p);    }    else {    pop_stack();    DO_JUMP_TO_NEXT;    }    }   });
pike.git/src/interpret_functions.h:2323:    {    LOCAL_VAR(struct object *o);    LOCAL_VAR(struct program *p);    o = s->u.object;    if((p=o->prog))    {    p = p->inherits[SUBTYPEOF(*s)].prog;    if(FIND_LFUN(p, LFUN_ARROW) == -1)    {    int fun; +  PIKE_OPCODE_T *addr;    fun=find_shared_string_identifier(Pike_fp->context->prog->strings[arg1],    p);    if(fun >= 0)    {    fun += o->prog->inherits[SUBTYPEOF(*s)].identifier_level; -  if(lower_mega_apply(args-1, o, fun)) +  if((addr = lower_mega_apply(args-1, o, fun)))    { -  PIKE_OPCODE_T *addr = Pike_fp->pc; +     Pike_fp->save_sp--;    DO_IF_DEBUG(Pike_fp->next->pc=0);    unlink_previous_frame();    DO_JUMP_TO(addr);    }    stack_pop_keep_top();    DO_DUMB_RETURN;    }    }    }    }       {    LOCAL_VAR(struct svalue tmp);    LOCAL_VAR(struct svalue tmp2); -  LOCAL_VAR(void *p); +  LOCAL_VAR(PIKE_OPCODE_T *p);    SET_SVAL(tmp, PIKE_T_STRING, 1, string,    Pike_fp->context->prog->strings[arg1]);       index_no_free(&tmp2, s, &tmp);    free_svalue(s);    move_svalue (s, &tmp2);    print_return_value();    -  if(p = low_mega_apply(APPLY_STACK, args, 0, 0)) +  if((p = low_mega_apply(APPLY_STACK, args, 0, 0)))    {    DO_IF_DEBUG(Pike_fp->next->pc=0);    unlink_previous_frame();    DO_JUMP_TO(p);    }    DO_DUMB_RETURN;    }   });      #undef DO_CALL_BUILTIN
pike.git/src/interpret_functions.h:2668:    *    * /grubba 2003-03-25    */    if(((p != Pike_fp->context->prog) ||    (Pike_fp->context !=    &p->inherits[p->identifier_references[Pike_fp->context->identifier_level +    arg1].inherit_offset])) ||    (ID_FROM_INT(p, arg1+Pike_fp->context->identifier_level)->    identifier_flags & IDENTIFIER_SCOPE_USED))    { -  PIKE_OPCODE_T *faddr; +     ptrdiff_t num_locals; -  +  PIKE_OPCODE_T *faddr; +  PIKE_OPCODE_T *addr2;    INT32 args = DO_NOT_WARN((INT32)(Pike_sp - *--Pike_mark_sp)); -  +     JUMP_SET_TO_PC_AT_NEXT (faddr);    faddr += GET_JUMP();    -  if(lower_mega_apply(args, +  if((addr2 = lower_mega_apply(args,    Pike_fp->current_object, -  (arg1+Pike_fp->context->identifier_level))) +  (arg1+Pike_fp->context->identifier_level))))    {    Pike_fp->flags |= PIKE_FRAME_RETURN_INTERNAL; -  addr = Pike_fp->pc; +  addr = addr2;    }    DO_JUMP_TO(addr);    }       /* FALL THROUGH */       /* Assume that the number of arguments is correct */       OPCODE0_TAILPTRJUMP(F_RECUR, "recur", I_UPDATE_ALL, {    DO_RECUR(0);