pike.git / src / peep.in

version» Context lines:

pike.git/src/peep.in:7:   POP_N_ELEMS POP_VALUE : POP_N_ELEMS ($1a + 1)   POP_VALUE POP_VALUE : POP_N_ELEMS (2)   POP_VALUE POP_N_ELEMS : POP_N_ELEMS ($2a + 1)   POP_N_ELEMS POP_N_ELEMS : POP_N_ELEMS ($1a + $2a)   POP_N_ELEMS(1) : POP_VALUE   POP_VALUE POP_TO_MARK : POP_TO_MARK   POP_N_ELEMS POP_TO_MARK : POP_TO_MARK      MARK MARK: MARK2   MARK POP_MARK: + MARK2 POP_MARK: MARK + MARK POP_TO_MARK: + MARK2 POP_TO_MARK: MARK +    SWAP SWAP:   DUP POP_VALUE:   DUP POP_N_ELEMS [$2a > 0]: POP_N_ELEMS($2a-1)   // The opcode list is clearer without this.   //SYNCH_MARK POP_SYNCH_MARK:      ASSIGN_GLOBAL POP_VALUE : ASSIGN_GLOBAL_AND_POP($1a)   ASSIGN_LOCAL POP_VALUE : ASSIGN_LOCAL_AND_POP($1a)   RECUR POP_VALUE : RECUR_AND_POP($1a)   
pike.git/src/peep.in:45:   NEG_NUMBER ASSIGN_LOCAL NEGATE: NEG_NUMBER($1a) ASSIGN_LOCAL_AND_POP($2a) NUMBER($1a)   CONST1 ASSIGN_LOCAL NEGATE: CONST1 ASSIGN_LOCAL_AND_POP($2a) CONST_1   CONST_1 ASSIGN_LOCAL NEGATE: CONST_1 ASSIGN_LOCAL_AND_POP($2a) CONST1      CONST0 ASSIGN_LOCAL_AND_POP : CLEAR_LOCAL($2a)   CONST0 ASSIGN_LOCAL: CLEAR_LOCAL($2a) CONST0      LOCAL_2_LOCAL [$1a == $1b] :   GLOBAL ASSIGN_GLOBAL_AND_POP($1a) :    + // Generated by for( int i=0; i<local; i++ ) where i is not used in + // the loop. + ASSIGN_LOCAL_NUMBER_AND_POP LOCAL($1a) : ASSIGN_LOCAL_NUMBER_AND_POP($1a,$1b) NUMBER($1b) + ASSIGN_GLOBAL_NUMBER_AND_POP GLOBAL($1a) : ASSIGN_GLOBAL_NUMBER_AND_POP($1a,$1b) NUMBER($1b) + NUMBER COMPL: NUMBER(~$1a) + ASSIGN_LOCAL_NUMBER_AND_POP LOCAL_LVALUE LOCAL($1a) : ASSIGN_LOCAL_NUMBER_AND_POP($1a,$1b) LOCAL_LVALUE($2a) NUMBER($1b) + ASSIGN_GLOBAL_NUMBER_AND_POP GLOBAL_LVALUE GLOBAL($1a) : ASSIGN_GLOBAL_NUMBER_AND_POP($1a,$1b) GLOBAL_LVALUE($2a) NUMBER($1b) + ASSIGN_LOCAL_NUMBER_AND_POP GLOBAL_LVALUE LOCAL($1a) : ASSIGN_LOCAL_NUMBER_AND_POP($1a,$1b) GLOBAL_LVALUE($2a) NUMBER($1b)    -  + // Ok, this is ridiculously specific, but it is generated by for(..) + // when the variable is not used, like above, but for globals: + ASSIGN_GLOBAL_NUMBER_AND_POP[$1b > -0x80000000] GLOBAL_LVALUE($1a) DEC: ASSIGN_GLOBAL_NUMBER_AND_POP($1a, $1b - 1) NUMBER($1b - 1) +  + ASSIGN_GLOBAL_NUMBER_AND_POP[$1b < 0x7fffffff] GLOBAL_LVALUE($1a) INC: ASSIGN_GLOBAL_NUMBER_AND_POP($1a, $1b + 1) NUMBER($1b + 1) +  + ASSIGN_GLOBAL_NUMBER_AND_POP[$1b > -0x80000000] GLOBAL_LVALUE($1a) DEC_AND_POP: ASSIGN_GLOBAL_NUMBER_AND_POP($1a, $1b - 1) + ASSIGN_GLOBAL_NUMBER_AND_POP[$1b < 0x7fffffff] GLOBAL_LVALUE($1a) INC_AND_POP: ASSIGN_GLOBAL_NUMBER_AND_POP($1a, $1b + 1) +  + LOCAL_LVALUE LOCAL ADD_TO_AND_POP : ADD_LOCALS_AND_POP($1a,$2a) + LOCAL_LVALUE NUMBER ADD_TO_AND_POP: ADD_LOCAL_INT_AND_POP($1a,$2a) + LOCAL_LVALUE CONST_1 ADD_TO_AND_POP: ADD_LOCAL_INT_AND_POP($1a,-1) + LOCAL_LVALUE CONST1 ADD_TO_AND_POP: ADD_LOCAL_INT_AND_POP($1a,1) + LOCAL_LVALUE CONST0 ADD_TO_AND_POP: +  + LOCAL_LVALUE LTOSVAL ADD_INT ASSIGN: ADD_LOCAL_INT($1a,$3a) + LOCAL_LVALUE LTOSVAL ADD_NEG_INT ASSIGN: ADD_LOCAL_INT($1a,-$3a) +  + NUMBER ASSIGN_LOCAL_AND_POP : ASSIGN_LOCAL_NUMBER_AND_POP($2a,$1a) + CONST0 ASSIGN_LOCAL_AND_POP : CLEAR_LOCAL($2a) + CONST1 ASSIGN_LOCAL_AND_POP : ASSIGN_LOCAL_NUMBER_AND_POP($2a,1) + CONST_1 ASSIGN_LOCAL_AND_POP : ASSIGN_LOCAL_NUMBER_AND_POP($2a,-1) +  + NUMBER ASSIGN_GLOBAL_AND_POP : ASSIGN_GLOBAL_NUMBER_AND_POP($2a,$1a) + CONST0 ASSIGN_GLOBAL_AND_POP : ASSIGN_GLOBAL_NUMBER_AND_POP($2a,0) + CONST1 ASSIGN_GLOBAL_AND_POP : ASSIGN_GLOBAL_NUMBER_AND_POP($2a,1) + CONST_1 ASSIGN_GLOBAL_AND_POP : ASSIGN_GLOBAL_NUMBER_AND_POP($2a,-1) +    // Remove clearing of locals from the beginning of functions   // But don't remove clearing of arguments!   BYTE ENTRY START_FUNCTION LABEL(0) CLEAR_LOCAL [$1a <= $5a] : BYTE($1a) ENTRY START_FUNCTION LABEL(0)   BYTE ENTRY START_FUNCTION LABEL(0) CLEAR_2_LOCAL [$1a <= $5a] : BYTE($1a) ENTRY START_FUNCTION LABEL(0)   BYTE ENTRY START_FUNCTION LABEL(0) CLEAR_4_LOCAL [$1a <= $5a] : BYTE($1a) ENTRY START_FUNCTION LABEL(0)      BYTE ENTRY START_FUNCTION CLEAR_LOCAL [$1a <= $4a] : BYTE($1a) ENTRY START_FUNCTION   BYTE ENTRY START_FUNCTION CLEAR_2_LOCAL [$1a <= $4a] : BYTE($1a) ENTRY START_FUNCTION   BYTE ENTRY START_FUNCTION CLEAR_4_LOCAL [$1a <= $4a] : BYTE($1a) ENTRY START_FUNCTION   
pike.git/src/peep.in:340:   CONST0 GLOBAL NEGATE ADD_INTS : GLOBAL($2a) NEGATE      LOCAL ADD_INT LOCAL($1a) : LOCAL($1a) DUP ADD_INT($2a) SWAP   GLOBAL ADD_INT GLOBAL($1a) : GLOBAL($1a) DUP ADD_INT($2a) SWAP   LOCAL ADD_NEG_INT LOCAL($1a) : LOCAL($1a) DUP ADD_NEG_INT($2a) SWAP   GLOBAL ADD_NEG_INT GLOBAL($1a) : GLOBAL($1a) DUP ADD_NEG_INT($2a) SWAP      LOCAL BRANCH_WHEN_NON_ZERO : BRANCH_IF_LOCAL($1a) POINTER($2a)   LOCAL BRANCH_WHEN_ZERO : BRANCH_IF_NOT_LOCAL($1a) POINTER($2a)    + // quick_branch_when[_non]_zero _knows_ that the + // value on the stack is an integer. + GT BRANCH_WHEN_ZERO : GT QUICK_BRANCH_WHEN_ZERO($2a) + GE BRANCH_WHEN_ZERO : GE QUICK_BRANCH_WHEN_ZERO($2a) + LT BRANCH_WHEN_ZERO : LT QUICK_BRANCH_WHEN_ZERO($2a) + LE BRANCH_WHEN_ZERO : LE QUICK_BRANCH_WHEN_ZERO($2a) +  + GT BRANCH_WHEN_NON_ZERO : GT QUICK_BRANCH_WHEN_NON_ZERO($2a) + GE BRANCH_WHEN_NON_ZERO : GE QUICK_BRANCH_WHEN_NON_ZERO($2a) + LT BRANCH_WHEN_NON_ZERO : LT QUICK_BRANCH_WHEN_NON_ZERO($2a) + LE BRANCH_WHEN_NON_ZERO : LE QUICK_BRANCH_WHEN_NON_ZERO($2a) +  + // It is not really neccessary to set up a frame for these cases. + // Deluxe version: Also avoid the argument/local clearing, asm-level + // register pushing etc. + // + // These are functions returning a constant, and doing nothing else. + MARK_AT(0) POP_TO_MARK INIT_FRAME RETURN_0 : RETURN_0 + MARK_AT(0) POP_TO_MARK INIT_FRAME UNDEFINED RETURN : UNDEFINED RETURN + MARK_AT(0) POP_TO_MARK INIT_FRAME RETURN_1 : RETURN_1 + MARK_AT(0) POP_TO_MARK INIT_FRAME NUMBER RETURN : NUMBER($4a) RETURN + MARK_AT(0) POP_TO_MARK INIT_FRAME STRING RETURN : STRING($4a) RETURN + MARK_AT(0) POP_TO_MARK INIT_FRAME CONSTANT RETURN : CONSTANT($4a) RETURN + MARK_AT(0) POP_TO_MARK INIT_FRAME NEG_NUMBER RETURN : NEG_NUMBER($4a) RETURN +    // Branches that jump to the next instruction   // Basic branches   BRANCH LABEL($1a) : LABEL($1a)   BRANCH_WHEN_ZERO LABEL($1a) : POP_VALUE LABEL($1a)   BRANCH_WHEN_NON_ZERO LABEL($1a) : POP_VALUE LABEL($1a)   BRANCH_WHEN_EQ LABEL($1a) : POP_VALUE POP_VALUE LABEL($1a)   BRANCH_WHEN_NE LABEL($1a) : POP_VALUE POP_VALUE LABEL($1a)   BRANCH_WHEN_LT LABEL($1a) : POP_VALUE POP_VALUE LABEL($1a)   BRANCH_WHEN_LE LABEL($1a) : POP_VALUE POP_VALUE LABEL($1a)   BRANCH_WHEN_GT LABEL($1a) : POP_VALUE POP_VALUE LABEL($1a)