Branch: Tag:

2000-04-21

2000-04-21 00:29:48 by Fredrik Hübinette (Hubbe) <hubbe@hubbe.net>

more opcodes formalized..

Rev: src/interpret.c:1.145
Rev: src/interpret_functions.h:1.15
Rev: src/interpreter.h:1.43
Rev: src/lex.c:1.77
Rev: src/peep.c:1.31

1:   /* -  * $Id: interpret_functions.h,v 1.14 2000/04/20 22:30:08 grubba Exp $ +  * $Id: interpret_functions.h,v 1.15 2000/04/21 00:29:48 hubbe Exp $    *    * Opcode definitions for the interpreter.    */
190:    arg1 + inherit->identifier_level);    Pike_sp++;    print_return_value(); -  break; +    }   BREAK;   
235:    Pike_sp->type=T_LVALUE;    Pike_sp->u.integer=id + inherit->identifier_level;    Pike_sp++; -  break; +    } -  +    BREAK;      OPCODE1(F_MARK_AND_LOCAL, "mark & local")
312:    }    push_svalue(f->locals + arg1);    print_return_value(); -  break; +    }   BREAK;   
328:    Pike_sp[0].u.lval=f->locals+arg1;    Pike_sp[1].type=T_VOID;    Pike_sp+=2; -  break; +    }   BREAK;   
344:   BREAK;      OPCODE1(F_CLEAR_2_LOCAL, "clear 2 local") -  instr = arg1; -  free_svalues(Pike_fp->locals + instr, 2, -1); -  Pike_fp->locals[instr].type = PIKE_T_INT; -  Pike_fp->locals[instr].subtype = 0; -  Pike_fp->locals[instr].u.integer = 0; -  Pike_fp->locals[instr+1].type = PIKE_T_INT; -  Pike_fp->locals[instr+1].subtype = 0; -  Pike_fp->locals[instr+1].u.integer = 0; +  free_svalues(Pike_fp->locals + arg1, 2, -1); +  Pike_fp->locals[arg1].type = PIKE_T_INT; +  Pike_fp->locals[arg1].subtype = 0; +  Pike_fp->locals[arg1].u.integer = 0; +  Pike_fp->locals[arg1+1].type = PIKE_T_INT; +  Pike_fp->locals[arg1+1].subtype = 0; +  Pike_fp->locals[arg1+1].u.integer = 0;   BREAK;      OPCODE1(F_CLEAR_4_LOCAL, "clear 4 local")   {    int e; -  instr = arg1; -  free_svalues(Pike_fp->locals + instr, 4, -1); +  free_svalues(Pike_fp->locals + arg1, 4, -1);    for(e = 0; e < 4; e++)    { -  Pike_fp->locals[instr+e].type = PIKE_T_INT; -  Pike_fp->locals[instr+e].subtype = 0; -  Pike_fp->locals[instr+e].u.integer = 0; +  Pike_fp->locals[arg1+e].type = PIKE_T_INT; +  Pike_fp->locals[arg1+e].subtype = 0; +  Pike_fp->locals[arg1+e].u.integer = 0;    }   }   BREAK;      OPCODE1(F_CLEAR_LOCAL, "clear local") -  instr = arg1; -  free_svalue(Pike_fp->locals + instr); -  Pike_fp->locals[instr].type = PIKE_T_INT; -  Pike_fp->locals[instr].subtype = 0; -  Pike_fp->locals[instr].u.integer = 0; +  free_svalue(Pike_fp->locals + arg1); +  Pike_fp->locals[arg1].type = PIKE_T_INT; +  Pike_fp->locals[arg1].subtype = 0; +  Pike_fp->locals[arg1].u.integer = 0;   BREAK;      OPCODE1(F_INC_LOCAL, "++local") -  instr = arg1; -  if( (Pike_fp->locals[instr].type == PIKE_T_INT) +  if( (Pike_fp->locals[arg1].type == PIKE_T_INT)   #ifdef AUTO_BIGNUM -  && (!INT_TYPE_ADD_OVERFLOW(Pike_fp->locals[instr].u.integer, 1)) +  && (!INT_TYPE_ADD_OVERFLOW(Pike_fp->locals[arg1].u.integer, 1))   #endif /* AUTO_BIGNUM */    )    { -  Pike_fp->locals[instr].u.integer++; -  assign_svalue_no_free(Pike_sp++,Pike_fp->locals+instr); +  Pike_fp->locals[arg1].u.integer++; +  assign_svalue_no_free(Pike_sp++,Pike_fp->locals+arg1);    } else { -  assign_svalue_no_free(Pike_sp++,Pike_fp->locals+instr); +  assign_svalue_no_free(Pike_sp++,Pike_fp->locals+arg1);    push_int(1);    f_add(2); -  assign_svalue(Pike_fp->locals+instr,Pike_sp-1); +  assign_svalue(Pike_fp->locals+arg1,Pike_sp-1);    }   BREAK;   
430:   BREAK;      OPCODE1(F_DEC_LOCAL, "--local") -  instr = arg1; -  if( (Pike_fp->locals[instr].type == PIKE_T_INT) +  if( (Pike_fp->locals[arg1].type == PIKE_T_INT)   #ifdef AUTO_BIGNUM -  && (!INT_TYPE_SUB_OVERFLOW(Pike_fp->locals[instr].u.integer, 1)) +  && (!INT_TYPE_SUB_OVERFLOW(Pike_fp->locals[arg1].u.integer, 1))   #endif /* AUTO_BIGNUM */    )    { -  Pike_fp->locals[instr].u.integer--; -  assign_svalue_no_free(Pike_sp++,Pike_fp->locals+instr); +  Pike_fp->locals[arg1].u.integer--; +  assign_svalue_no_free(Pike_sp++,Pike_fp->locals+arg1);    } else { -  assign_svalue_no_free(Pike_sp++,Pike_fp->locals+instr); +  assign_svalue_no_free(Pike_sp++,Pike_fp->locals+arg1);    push_int(1);    o_subtract(); -  assign_svalue(Pike_fp->locals+instr,Pike_sp-1); +  assign_svalue(Pike_fp->locals+arg1,Pike_sp-1);    }   BREAK;   
791:    pop_n_elems(arg1);   BREAK;    -  CASE(F_MARK2); *(Pike_mark_sp++)=Pike_sp; -  CASE(F_MARK); *(Pike_mark_sp++)=Pike_sp; break; + OPCODE0_TAIL(F_MARK2,"mark mark") +  *(Pike_mark_sp++)=Pike_sp; + OPCODE0(F_MARK,"mark") +  *(Pike_mark_sp++)=Pike_sp; + BREAK;      OPCODE1(F_MARK_X, "mark sp-X")    *(Pike_mark_sp++)=Pike_sp-arg1;
807:   BREAK;       /* Jumps */ -  CASE(F_BRANCH); + OPCODE0_JUMP(F_BRANCH,"branch")    DOJUMP(); -  break; + BREAK;    -  CASE(F_BRANCH_IF_NOT_LOCAL_ARROW); + OPCODE2(F_BRANCH_IF_NOT_LOCAL_ARROW,"branch if !local->x")   {    struct svalue tmp;    tmp.type=PIKE_T_STRING; -  tmp.u.string=Pike_fp->context.prog->strings[GET_ARG()]; +  tmp.u.string=Pike_fp->context.prog->strings[arg1];    tmp.subtype=1;    Pike_sp->type=PIKE_T_INT;    Pike_sp++; -  index_no_free(Pike_sp-1,Pike_fp->locals+GET_ARG2() , &tmp); +  index_no_free(Pike_sp-1,Pike_fp->locals+arg2, &tmp);    print_return_value();   }       /* Fall through */    -  CASE(F_BRANCH_WHEN_ZERO); + OPCODE0_TAILJUMP(F_BRANCH_WHEN_ZERO,"branch if zero")    if(!IS_ZERO(Pike_sp-1))    { -  pc+=sizeof(INT32); +  SKIPJUMP();    }else{    DOJUMP();    }    pop_stack(); -  break; + BREAK;       -  CASE(F_BRANCH_WHEN_NON_ZERO); + OPCODE0_JUMP(F_BRANCH_WHEN_NON_ZERO,"branch if not zero")    if(IS_ZERO(Pike_sp-1))    { -  pc+=sizeof(INT32); +  SKIPJUMP();    }else{    DOJUMP();    }    pop_stack(); -  break; + BREAK    -  CASE(F_BRANCH_IF_LOCAL); -  instr=GET_ARG(); -  if(IS_ZERO(Pike_fp->locals + instr)) + OPCODE1_JUMP(F_BRANCH_IF_LOCAL,"branch if local") +  if(IS_ZERO(Pike_fp->locals + arg1))    { -  pc+=sizeof(INT32); +  SKIPJUMP();    }else{    DOJUMP();    } -  break; + BREAK;       CASE(F_BRANCH_IF_NOT_LOCAL);    instr=GET_ARG();    if(!IS_ZERO(Pike_fp->locals + instr))    { -  pc+=sizeof(INT32); +  SKIPJUMP();    }else{    DOJUMP();    }
876:    CASE(F_BRANCH_AND_POP_WHEN_ZERO);    if(!IS_ZERO(Pike_sp-1))    { -  pc+=sizeof(INT32); +  SKIPJUMP();    }else{    DOJUMP();    pop_stack();
886:    CASE(F_BRANCH_AND_POP_WHEN_NON_ZERO);    if(IS_ZERO(Pike_sp-1))    { -  pc+=sizeof(INT32); +  SKIPJUMP();    }else{    DOJUMP();    pop_stack();
896:    CASE(F_LAND);    if(!IS_ZERO(Pike_sp-1))    { -  pc+=sizeof(INT32); +  SKIPJUMP();    pop_stack();    }else{    DOJUMP();
906:    CASE(F_LOR);    if(IS_ZERO(Pike_sp-1))    { -  pc+=sizeof(INT32); +  SKIPJUMP();    pop_stack();    }else{    DOJUMP();
917:    if(!is_eq(Pike_sp-2,Pike_sp-1))    {    pop_n_elems(2); -  pc+=sizeof(INT32); +  SKIPJUMP();    }else{    pop_n_elems(2);    push_int(1);
929:    if(is_eq(Pike_sp-2,Pike_sp-1))    {    pop_n_elems(2); -  pc+=sizeof(INT32); +  SKIPJUMP();    }else{    pop_n_elems(2);    push_int(0);
983:    pc+=EXTRACT_INT(pc);    Pike_sp[-1].u.integer++;    }else{ -  pc+=sizeof(INT32); +  SKIPJUMP();    }    break;    }