Branch: Tag:

2001-01-31

2001-01-31 22:05:42 by Martin Stjernholm <mast@lysator.liu.se>

Added optimizations for CALL_FUNCTION_AND_POP and RECUR_AND_POP. Fixes
to handle the SYNCH_MARK debug opcodes.

Rev: src/peep.in:1.47

1:   // - // $Id: peep.in,v 1.46 2001/01/18 00:28:39 grubba Exp $ + // $Id: peep.in,v 1.47 2001/01/31 22:05:42 mast Exp $   //      NOP :
14:      MARK MARK: MARK2   MARK POP_MARK: + // 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)   CALL_LFUN POP_VALUE : CALL_LFUN_AND_POP($1a)   APPLY POP_VALUE : APPLY_AND_POP($1a) -  + CALL_FUNCTION POP_VALUE : CALL_FUNCTION_AND_POP + RECUR POP_VALUE : RECUR_AND_POP($1a)   MARK APPLY : MARK_APPLY($2a)   MARK_APPLY POP_VALUE : MARK_APPLY_POP($1a)   NUMBER(0) : CONST0
78:   POP_VALUE RETURN_1: RETURN_1   POP_N_ELEMS RETURN_1: RETURN_1    - NOTREACHED !LABEL : NOTREACHED - BRANCH !LABEL : BRANCH($1a) - RETURN !LABEL : RETURN - RETURN_0 !LABEL : RETURN_0 - RETURN_1 !LABEL : RETURN_1 - RETURN_LOCAL !LABEL : RETURN_LOCAL($1a) - APPLY_AND_RETURN !LABEL : APPLY_AND_RETURN($1a) - CALL_FUNCTION_AND_RETURN !LABEL : CALL_FUNCTION_AND_RETURN($1a) - CALL_LFUN_AND_RETURN !LABEL : CALL_LFUN_AND_RETURN($1a) + // F_POP_SYNCH_MARK is output only with -d3 and higher. We keep them + // solely for balancing the asm debug output. + NOTREACHED ? [$2o != F_LABEL && $2o != F_POP_SYNCH_MARK] : NOTREACHED + BRANCH ? [$2o != F_LABEL && $2o != F_POP_SYNCH_MARK] : BRANCH($1a) + RETURN ? [$2o != F_LABEL && $2o != F_POP_SYNCH_MARK] : RETURN + RETURN_0 ? [$2o != F_LABEL && $2o != F_POP_SYNCH_MARK] : RETURN_0 + RETURN_1 ? [$2o != F_LABEL && $2o != F_POP_SYNCH_MARK] : RETURN_1 + RETURN_LOCAL ? [$2o != F_LABEL && $2o != F_POP_SYNCH_MARK] : RETURN_LOCAL($1a) + APPLY_AND_RETURN ? [$2o != F_LABEL && $2o != F_POP_SYNCH_MARK] : APPLY_AND_RETURN($1a) + CALL_FUNCTION_AND_RETURN ? [$2o != F_LABEL && $2o != F_POP_SYNCH_MARK] : CALL_FUNCTION_AND_RETURN($1a) + CALL_LFUN_AND_RETURN ? [$2o != F_LABEL && $2o != F_POP_SYNCH_MARK] : CALL_LFUN_AND_RETURN($1a)      LOCAL_LVALUE INC : INC_LOCAL ($1a)   LOCAL_LVALUE POST_INC : POST_INC_LOCAL ($1a)