596e36 | 1998-03-31 | Fredrik Hübinette (Hubbe) | | //
|
502e2b | 2001-01-18 | Henrik Grubbström (Grubba) | | // $Id: peep.in,v 1.46 2001/01/18 00:28:39 grubba Exp $
|
596e36 | 1998-03-31 | Fredrik Hübinette (Hubbe) | | //
|
66d51c | 1997-03-04 | Fredrik Hübinette (Hubbe) | | NOP :
|
2199ed | 1996-04-13 | Fredrik Hübinette (Hubbe) | | POP_N_ELEMS (0) :
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
|
71d2c2 | 2001-01-15 | Martin Stjernholm | | POP_VALUE POP_TO_MARK : POP_TO_MARK
POP_N_ELEMS POP_TO_MARK : POP_TO_MARK
|
2199ed | 1996-04-13 | Fredrik Hübinette (Hubbe) | |
|
c67d34 | 1996-08-03 | Fredrik Hübinette (Hubbe) | | MARK MARK: MARK2
|
71d2c2 | 2001-01-15 | Martin Stjernholm | | MARK POP_MARK:
|
c67d34 | 1996-08-03 | Fredrik Hübinette (Hubbe) | |
|
2199ed | 1996-04-13 | Fredrik Hübinette (Hubbe) | | ASSIGN_GLOBAL POP_VALUE : ASSIGN_GLOBAL_AND_POP($1a)
ASSIGN_LOCAL POP_VALUE : ASSIGN_LOCAL_AND_POP($1a)
|
c67d34 | 1996-08-03 | Fredrik Hübinette (Hubbe) | | CALL_LFUN POP_VALUE : CALL_LFUN_AND_POP($1a)
|
e82b30 | 1997-01-29 | Fredrik Hübinette (Hubbe) | | APPLY POP_VALUE : APPLY_AND_POP($1a)
|
3c04e8 | 1997-03-13 | Fredrik Hübinette (Hubbe) | | MARK APPLY : MARK_APPLY($2a)
MARK_APPLY POP_VALUE : MARK_APPLY_POP($1a)
|
2199ed | 1996-04-13 | Fredrik Hübinette (Hubbe) | | NUMBER(0) : CONST0
NUMBER(1) : CONST1
NUMBER(-1) : CONST_1
NUMBER (0x7fffffff) : BIGNUM
CONST0 NEGATE : CONST0
CONST1 NEGATE : CONST_1
CONST_1 NEGATE : CONST1
NUMBER NEGATE : NEG_NUMBER($1a)
|
48073b | 1998-09-01 | Fredrik Hübinette (Hubbe) | | NUMBER [$1a < 0 && (-$1a)>0] : NEG_NUMBER (-$1a)
|
2199ed | 1996-04-13 | Fredrik Hübinette (Hubbe) | | NEG_NUMBER NEGATE : NUMBER ($1a)
|
3c04e8 | 1997-03-13 | Fredrik Hübinette (Hubbe) | | NEGATE NEGATE :
COMPL COMPL :
|
a2b70a | 2000-04-30 | Fredrik Hübinette (Hubbe) | | NEGATE CONST_1 ADD_INTS : COMPL
|
2199ed | 1996-04-13 | Fredrik Hübinette (Hubbe) | | NEGATE CONST1 SUBTRACT : COMPL
CONST0 ASSIGN_LOCAL_AND_POP : CLEAR_LOCAL($2a)
|
a7538d | 1998-05-12 | Fredrik Hübinette (Hubbe) | |
|
8d63bc | 2000-08-22 | Henrik Grubbström (Grubba) | | LOCAL_2_LOCAL [$1a == $1b] :
|
a7538d | 1998-05-12 | Fredrik Hübinette (Hubbe) | | // Remove clearing of locals from the beginning of functions
|
873ceb | 2000-04-30 | Fredrik Hübinette (Hubbe) | | START_FUNCTION LABEL(0) CLEAR_LOCAL : LABEL(0)
START_FUNCTION LABEL(0) CLEAR_2_LOCAL : LABEL(0)
START_FUNCTION LABEL(0) CLEAR_4_LOCAL : LABEL(0)
START_FUNCTION CLEAR_LOCAL :
START_FUNCTION CLEAR_2_LOCAL :
START_FUNCTION CLEAR_4_LOCAL :
|
a7538d | 1998-05-12 | Fredrik Hübinette (Hubbe) | |
|
e82b30 | 1997-01-29 | Fredrik Hübinette (Hubbe) | | CLEAR_LOCAL NUMBER(0) ASSIGN_LOCAL_AND_POP ($1a) : CLEAR_LOCAL($1a)
CLEAR_LOCAL NUMBER(0) ASSIGN_LOCAL_AND_POP ($1a+1) : CLEAR_2_LOCAL($1a)
|
9b08a2 | 1998-03-31 | Fredrik Hübinette (Hubbe) | | CLEAR_2_LOCAL CLEAR_2_LOCAL($1a+2) : CLEAR_4_LOCAL($1a)
|
2199ed | 1996-04-13 | Fredrik Hübinette (Hubbe) | |
|
596e36 | 1998-03-31 | Fredrik Hübinette (Hubbe) | | // CONST_1 MULTIPLY : NEGATE
// CONST0 MULTIPLY : POP_VALUE CONST0
// CONST1 MULTIPLY :
|
502e2b | 2001-01-18 | Henrik Grubbström (Grubba) | | // NUMBER MULTIPLY [!($1a & ($1a - 1))]: NUMBER(my_log2($1a)) LSH
|
2199ed | 1996-04-13 | Fredrik Hübinette (Hubbe) | |
|
596e36 | 1998-03-31 | Fredrik Hübinette (Hubbe) | | // CONST_1 DIVIDE : NEGATE
// CONST1 DIVIDE :
|
502e2b | 2001-01-18 | Henrik Grubbström (Grubba) | | // NUMBER DIVIDE [!($1a & ($1a - 1))]: NUMBER(my_log2($1a)) RSH
|
2199ed | 1996-04-13 | Fredrik Hübinette (Hubbe) | |
CONST0 SUBTRACT:
CONST0 XOR:
CONST_1 XOR: COMPL
CONST0 RETURN: RETURN_0
|
3c04e8 | 1997-03-13 | Fredrik Hübinette (Hubbe) | | CONST1 RETURN: RETURN_1
|
2199ed | 1996-04-13 | Fredrik Hübinette (Hubbe) | | INC POP_VALUE: INC_AND_POP
POST_INC POP_VALUE: INC_AND_POP
DEC POP_VALUE: DEC_AND_POP
POST_DEC POP_VALUE: DEC_AND_POP
NOT BRANCH_WHEN_NON_ZERO: BRANCH_WHEN_ZERO($2a)
NOT BRANCH_WHEN_ZERO: BRANCH_WHEN_NON_ZERO($2a)
|
dbd32e | 2000-04-26 | Fredrik Hübinette (Hubbe) | | POP_VALUE RETURN_0: RETURN_0
POP_N_ELEMS RETURN_0: RETURN_0
POP_VALUE RETURN_1: RETURN_1
POP_N_ELEMS RETURN_1: RETURN_1
|
928f95 | 2000-11-30 | Fredrik Hübinette (Hubbe) | | NOTREACHED !LABEL : NOTREACHED
|
2199ed | 1996-04-13 | Fredrik Hübinette (Hubbe) | | BRANCH !LABEL : BRANCH($1a)
RETURN !LABEL : RETURN
RETURN_0 !LABEL : RETURN_0
|
9b08a2 | 1998-03-31 | Fredrik Hübinette (Hubbe) | | RETURN_1 !LABEL : RETURN_1
RETURN_LOCAL !LABEL : RETURN_LOCAL($1a)
|
dd7620 | 1998-05-13 | Fredrik Hübinette (Hubbe) | | 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)
|
2199ed | 1996-04-13 | Fredrik Hübinette (Hubbe) | |
LOCAL_LVALUE INC : INC_LOCAL ($1a)
LOCAL_LVALUE POST_INC : POST_INC_LOCAL ($1a)
LOCAL_LVALUE INC_AND_POP : INC_LOCAL_AND_POP ($1a)
INC_LOCAL POP_VALUE : INC_LOCAL_AND_POP ($1a)
POST_INC_LOCAL POP_VALUE : INC_LOCAL_AND_POP ($1a)
LOCAL_LVALUE DEC : DEC_LOCAL ($1a)
LOCAL_LVALUE POST_DEC : POST_DEC_LOCAL ($1a)
LOCAL_LVALUE DEC_AND_POP : DEC_LOCAL_AND_POP ($1a)
DEC_LOCAL POP_VALUE : DEC_LOCAL_AND_POP ($1a)
POST_DEC_LOCAL POP_VALUE : DEC_LOCAL_AND_POP ($1a)
|
0f1943 | 1999-11-29 | Fredrik Hübinette (Hubbe) | | ASSIGN_LOCAL_AND_POP LOCAL ($1a) RETURN: ASSIGN_LOCAL($1a) RETURN
|
777a26 | 2000-06-24 | Fredrik Hübinette (Hubbe) | | ASSIGN_LOCAL_AND_POP LOCAL ($1a) RETURN [!(Pike_compiler->compiler_frame->lexical_scope & SCOPE_SCOPED)]: RETURN
|
0f1943 | 1999-11-29 | Fredrik Hübinette (Hubbe) | |
ASSIGN_LOCAL BRANCH_WHEN_ZERO LOCAL($1a) RETURN LABEL($2a): ASSIGN_LOCAL($1a) RETURN_IF_TRUE LABEL($2a)
|
777a26 | 2000-06-24 | Fredrik Hübinette (Hubbe) | | ASSIGN_LOCAL BRANCH_WHEN_ZERO LOCAL($1a) RETURN LABEL($2a) [!(Pike_compiler->compiler_frame->lexical_scope & SCOPE_SCOPED)] : RETURN_IF_TRUE ASSIGN_LOCAL($1a) LABEL($2a)
|
0f1943 | 1999-11-29 | Fredrik Hübinette (Hubbe) | |
ASSIGN_GLOBAL BRANCH_WHEN_ZERO GLOBAL($1a) RETURN LABEL($2a): ASSIGN_GLOBAL($1a) RETURN_IF_TRUE LABEL($2a)
|
c67d34 | 1996-08-03 | Fredrik Hübinette (Hubbe) | |
GLOBAL_LVALUE INC_AND_POP GLOBAL($1a): GLOBAL_LVALUE($1a) INC
GLOBAL_LVALUE DEC_AND_POP GLOBAL($1a): GLOBAL_LVALUE($1a) DEC
|
2199ed | 1996-04-13 | Fredrik Hübinette (Hubbe) | | CONST1 BRANCH_WHEN_ZERO:
CONST0 BRANCH_WHEN_ZERO: BRANCH($2a)
CONST1 BRANCH_WHEN_NON_ZERO: BRANCH($2a)
CONST0 BRANCH_WHEN_NON_ZERO:
|
dfb214 | 1998-06-05 | Fredrik Hübinette (Hubbe) | | // These optimizations are now handled in optimize_eq
// CONST0 BRANCH_WHEN_EQ: BRANCH_WHEN_ZERO($2a)
// CONST0 BRANCH_WHEN_NE: BRANCH_WHEN_NON_ZERO($2a)
// CONST0 EQ: NOT
|
a991b9 | 1998-06-05 | Fredrik Hübinette (Hubbe) | |
|
2199ed | 1996-04-13 | Fredrik Hübinette (Hubbe) | | EQ BRANCH_WHEN_NON_ZERO: BRANCH_WHEN_EQ ($2a)
NE BRANCH_WHEN_NON_ZERO: BRANCH_WHEN_NE ($2a)
LT BRANCH_WHEN_NON_ZERO: BRANCH_WHEN_LT ($2a)
GT BRANCH_WHEN_NON_ZERO: BRANCH_WHEN_GT ($2a)
LE BRANCH_WHEN_NON_ZERO: BRANCH_WHEN_LE ($2a)
GE BRANCH_WHEN_NON_ZERO: BRANCH_WHEN_GE ($2a)
EQ BRANCH_WHEN_ZERO: BRANCH_WHEN_NE ($2a)
NE BRANCH_WHEN_ZERO: BRANCH_WHEN_EQ ($2a)
LT BRANCH_WHEN_ZERO: BRANCH_WHEN_GE ($2a)
GT BRANCH_WHEN_ZERO: BRANCH_WHEN_LE ($2a)
LE BRANCH_WHEN_ZERO: BRANCH_WHEN_GT ($2a)
GE BRANCH_WHEN_ZERO: BRANCH_WHEN_LT ($2a)
|
419fab | 1997-03-09 | Fredrik Hübinette (Hubbe) | | EQ LOR: EQ_OR ($2a)
|
2d1234 | 1997-03-10 | Fredrik Hübinette (Hubbe) | | EQ LAND: EQ_AND ($2a)
|
419fab | 1997-03-09 | Fredrik Hübinette (Hubbe) | |
|
2199ed | 1996-04-13 | Fredrik Hübinette (Hubbe) | | EQ NOT: NE
NE NOT: EQ
LT NOT: GE
GT NOT: LE
LE NOT: GT
GE NOT: LT
|
c67d34 | 1996-08-03 | Fredrik Hübinette (Hubbe) | |
|
a96ce9 | 2000-04-19 | Fredrik Hübinette (Hubbe) | | LOCAL LOCAL [$3o != F_SIZEOF && $3o != F_INDEX ]: 2_LOCALS ($1a,$2a)
|
e82b30 | 1997-01-29 | Fredrik Hübinette (Hubbe) | | MARK LOCAL [ $3o != F_SIZEOF && $3o != F_INDEX ]: MARK_AND_LOCAL ($2a)
|
9b08a2 | 1998-03-31 | Fredrik Hübinette (Hubbe) | | MARK STRING : MARK_AND_STRING($2a)
|
c67d34 | 1996-08-03 | Fredrik Hübinette (Hubbe) | | LOCAL SIZEOF: SIZEOF_LOCAL ($1a)
|
06983f | 1996-09-22 | Fredrik Hübinette (Hubbe) | | STRING INDEX: STRING_INDEX ($1a)
|
6e36e5 | 2000-11-30 | Fredrik Hübinette (Hubbe) | | INDEX SWITCH: SWITCH_ON_INDEX($2a)
LOCAL SWITCH: SWITCH_ON_LOCAL($1a,$2a)
|
99761f | 1998-10-09 | Fredrik Hübinette (Hubbe) | |
STRING CLEAR_STRING_SUBTYPE: STRING ($1a)
CONST0 CLEAR_STRING_SUBTYPE: CONST0
CONST1 CLEAR_STRING_SUBTYPE: CONST1
CONST_1 CLEAR_STRING_SUBTYPE: CONST_1
NUMBER CLEAR_STRING_SUBTYPE: NUMBER($1a)
NEG_NUMBER CLEAR_STRING_SUBTYPE: NEG_NUMBER($1a)
|
06983f | 1996-09-22 | Fredrik Hübinette (Hubbe) | | LOCAL INDEX: LOCAL_INDEX ($1a)
|
99761f | 1998-10-09 | Fredrik Hübinette (Hubbe) | | LOCAL CLEAR_STRING_SUBTYPE INDEX: LOCAL_INDEX ($1a)
|
a96ce9 | 2000-04-19 | Fredrik Hübinette (Hubbe) | | LOCAL LOCAL INDEX: LOCAL_LOCAL_INDEX($2a,$1a)
LOCAL LOCAL CLEAR_STRING_SUBTYPE INDEX: LOCAL_LOCAL_INDEX($2a,$1a)
|
99761f | 1998-10-09 | Fredrik Hübinette (Hubbe) | |
|
06983f | 1996-09-22 | Fredrik Hübinette (Hubbe) | | CONST0 INDEX: POS_INT_INDEX (0)
CONST_1 INDEX: NEG_INT_INDEX (1)
CONST1 INDEX: POS_INT_INDEX (1)
|
dffa01 | 1997-01-15 | Fredrik Hübinette (Hubbe) | |
|
6c1981 | 2000-10-09 | Fredrik Hübinette (Hubbe) | | NUMBER [$1a < 0 && ($1a != -$1a)] INDEX: NEG_INT_INDEX (-$1a)
|
06983f | 1996-09-22 | Fredrik Hübinette (Hubbe) | | NUMBER [$1a >= 0] INDEX: POS_INT_INDEX ($1a)
NEG_NUMBER [$1a >= 0] INDEX: NEG_INT_INDEX ($1a)
|
6c1981 | 2000-10-09 | Fredrik Hübinette (Hubbe) | | NEG_NUMBER [$1a < 0 && ($1a != -$1a)] INDEX: POS_INT_INDEX (-$1a)
|
3c04e8 | 1997-03-13 | Fredrik Hübinette (Hubbe) | |
BRANCH_WHEN_ZERO BRANCH LABEL ($1a): BRANCH_WHEN_NON_ZERO($2a) LABEL($1a)
BRANCH_WHEN_NON_ZERO BRANCH LABEL ($1a): BRANCH_WHEN_ZERO($2a) LABEL($1a)
BRANCH_WHEN_EQ BRANCH LABEL ($1a) : BRANCH_WHEN_NE($2a) LABEL($1a)
BRANCH_WHEN_NE BRANCH LABEL ($1a) : BRANCH_WHEN_EQ($2a) LABEL($1a)
BRANCH_WHEN_LT BRANCH LABEL ($1a) : BRANCH_WHEN_GE($2a) LABEL($1a)
BRANCH_WHEN_GE BRANCH LABEL ($1a) : BRANCH_WHEN_LT($2a) LABEL($1a)
BRANCH_WHEN_LE BRANCH LABEL ($1a) : BRANCH_WHEN_GT($2a) LABEL($1a)
BRANCH_WHEN_GT BRANCH LABEL ($1a) : BRANCH_WHEN_LE($2a) LABEL($1a)
|
a2b70a | 2000-04-30 | Fredrik Hübinette (Hubbe) | | CONST0 ADD_INTS: ADD_INT (0)
CONST1 ADD_INTS: ADD_INT (1)
CONST_1 ADD_INTS: ADD_NEG_INT (1)
NUMBER [$1a >= 0] ADD_INTS : ADD_INT ($1a)
|
6c1981 | 2000-10-09 | Fredrik Hübinette (Hubbe) | | NUMBER [$1a < 0 && ($1a != -$1a)] ADD_INTS : ADD_NEG_INT (-$1a)
|
a2b70a | 2000-04-30 | Fredrik Hübinette (Hubbe) | |
|
3c04e8 | 1997-03-13 | Fredrik Hübinette (Hubbe) | | CONST0 ADD: ADD_INT (0)
CONST1 ADD: ADD_INT (1)
CONST_1 ADD: ADD_NEG_INT (1)
NUMBER [$1a >= 0] ADD : ADD_INT ($1a)
|
6c1981 | 2000-10-09 | Fredrik Hübinette (Hubbe) | | NUMBER [$1a < 0 && ($1a != -$1a) ] ADD : ADD_NEG_INT (-$1a)
|
3c04e8 | 1997-03-13 | Fredrik Hübinette (Hubbe) | |
CONST0 SUBTRACT: ADD_INT (0)
CONST1 SUBTRACT: ADD_NEG_INT (-1)
CONST_1 SUBTRACT: ADD_INT (1)
NUMBER [$1a >= 0] SUBTRACT : ADD_NEG_INT ($1a)
|
6c1981 | 2000-10-09 | Fredrik Hübinette (Hubbe) | | NUMBER [$1a < 0 && ($1a != -$1a)] SUBTRACT : ADD_INT (-$1a)
|
156fd5 | 1997-10-27 | Fredrik Hübinette (Hubbe) | |
LTOSVAL2 ADD ASSIGN_AND_POP : ADD_TO_AND_POP
LTOSVAL ADD ASSIGN_AND_POP : ADD_TO_AND_POP
|
b1f4eb | 1998-01-13 | Fredrik Hübinette (Hubbe) | |
|
a2b70a | 2000-04-30 | Fredrik Hübinette (Hubbe) | | LTOSVAL2 ADD_INTS ASSIGN_AND_POP : ADD_TO_AND_POP
LTOSVAL ADD_INTS ASSIGN_AND_POP : ADD_TO_AND_POP
LTOSVAL2 ADD_FLOATS ASSIGN_AND_POP : ADD_TO_AND_POP
LTOSVAL ADD_FLOATS ASSIGN_AND_POP : ADD_TO_AND_POP
LOCAL CONST1 ADD_TO_AND_POP : INC_LOCAL_AND_POP($1a)
LOCAL CONST_1 ADD_TO_AND_POP : DEC_LOCAL_AND_POP($1a)
|
9b08a2 | 1998-03-31 | Fredrik Hübinette (Hubbe) | | APPLY [ !(debug_options & NO_TAILRECURSION) ] RETURN : APPLY_AND_RETURN($1a)
CALL_FUNCTION [ !(debug_options & NO_TAILRECURSION) ] RETURN : CALL_FUNCTION_AND_RETURN
CALL_LFUN [ !(debug_options & NO_TAILRECURSION) ] RETURN : CALL_LFUN_AND_RETURN($1a)
LOCAL RETURN : RETURN_LOCAL($1a)
|
a96ce9 | 2000-04-19 | Fredrik Hübinette (Hubbe) | | APPLY ASSIGN_LOCAL_AND_POP : APPLY_ASSIGN_LOCAL_AND_POP($1a,$2a)
|
9b08a2 | 1998-03-31 | Fredrik Hübinette (Hubbe) | | ASSIGN_LOCAL_AND_POP INC_LOCAL_AND_POP($1a) : ADD_INT(1) ASSIGN_LOCAL_AND_POP($1a)
ASSIGN_LOCAL_AND_POP DEC_LOCAL_AND_POP($1a) : ADD_NEG_INT(1) ASSIGN_LOCAL_AND_POP($1a)
|
327b99 | 1999-10-25 | Fredrik Hübinette (Hubbe) | | NUMBER ADD_INT [ !INT_TYPE_ADD_OVERFLOW($1a, $2a) ] : NUMBER($1a+$2a)
NUMBER ADD_NEG_INT [ !INT_TYPE_SUB_OVERFLOW($1a, $2a) ]: NUMBER($1a-$2a)
NEG_NUMBER ADD_INT [ !INT_TYPE_ADD_OVERFLOW(-$1a, $2a) ]: NUMBER(-$1a+$2a)
NEG_NUMBER ADD_NEG_INT [ !INT_TYPE_SUB_OVERFLOW(-$1a, $2a) ]: NUMBER(-$1a-$2a)
|
9b08a2 | 1998-03-31 | Fredrik Hübinette (Hubbe) | |
LOCAL BRANCH_WHEN_NON_ZERO : BRANCH_IF_LOCAL($1a) POINTER($2a)
|
a7538d | 1998-05-12 | Fredrik Hübinette (Hubbe) | | LOCAL BRANCH_WHEN_ZERO : BRANCH_IF_NOT_LOCAL($1a) POINTER($2a)
|
9b08a2 | 1998-03-31 | Fredrik Hübinette (Hubbe) | |
|
7a5c14 | 2000-08-22 | Henrik Grubbström (Grubba) | | // Branches that jump to the next instruction
// Basic branches
BRANCH LABEL($1a) : LABEL($1a)
|
f0e9e3 | 2001-01-15 | Martin Stjernholm | | 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)
BRANCH_WHEN_GE LABEL($1a) : POP_VALUE POP_VALUE LABEL($1a)
|
7a5c14 | 2000-08-22 | Henrik Grubbström (Grubba) | | // These variants use a POINTER
BRANCH_IF_NOT_LOCAL_ARROW POINTER LABEL ($2a) : LABEL($2a)
BRANCH_IF_LOCAL POINTER LABEL($2a) : LABEL($2a)
BRANCH_IF_NOT_LOCAL POINTER LABEL($2a) : LABEL($2a)
|
928f95 | 2000-11-30 | Fredrik Hübinette (Hubbe) | | #define OPT_INCDEC(X) \
X##_LOCAL_AND_POP LOCAL ($1a) : X##_LOCAL ($1a) ; \
X##_LOCAL_AND_POP LOCAL LOCAL ($1a) : LOCAL($2a) X##_LOCAL ($1a) ; \
X##_LOCAL_AND_POP GLOBAL LOCAL ($1a) : GLOBAL($2a) X##_LOCAL ($1a) ;
OPT_INCDEC(INC)
OPT_INCDEC(DEC)
|
9b08a2 | 1998-03-31 | Fredrik Hübinette (Hubbe) | | ASSIGN_LOCAL_AND_POP LOCAL($1a) : ASSIGN_LOCAL($1a)
ASSIGN_GLOBAL_AND_POP GLOBAL($1a) : ASSIGN_GLOBAL($1a)
|
a96ce9 | 2000-04-19 | Fredrik Hübinette (Hubbe) | | APPLY_ASSIGN_LOCAL_AND_POP LOCAL ($1b) : APPLY_ASSIGN_LOCAL($1a,$1b)
|
9b08a2 | 1998-03-31 | Fredrik Hübinette (Hubbe) | |
DEC_LOCAL_AND_POP MARK_AND_LOCAL ($1a) : MARK DEC_LOCAL ($1a)
INC_LOCAL_AND_POP MARK_AND_LOCAL ($1a) : MARK INC_LOCAL ($1a)
ASSIGN_GLOBAL_AND_POP MARK GLOBAL($1a) : MARK_X(1) ASSIGN_GLOBAL($1a)
ASSIGN_LOCAL_AND_POP MARK_AND_LOCAL($1a) : MARK_X(1) ASSIGN_LOCAL($1a)
|
a96ce9 | 2000-04-19 | Fredrik Hübinette (Hubbe) | | APPLY_ASSIGN_LOCAL_AND_POP MARK_AND_LOCAL ($1b) : APPLY_ASSIGN_LOCAL($1a,$1b) MARK_X(1)
|
9b08a2 | 1998-03-31 | Fredrik Hübinette (Hubbe) | |
ASSIGN_LOCAL ASSIGN_LOCAL($1a) : ASSIGN_LOCAL($1a)
|
596e36 | 1998-03-31 | Fredrik Hübinette (Hubbe) | | // MARK_X rules
|
9b08a2 | 1998-03-31 | Fredrik Hübinette (Hubbe) | | MARK_X(0) : MARK
LOCAL MARK_X [$2a>0] : MARK_X($2a-1) LOCAL($1a)
STRING MARK_X [$2a>0] : MARK_X($2a-1) STRING($1a)
NUMBER MARK_X [$2a>0] : MARK_X($2a-1) NUMBER($1a)
CONST0 MARK_X [$2a>0] : MARK_X($2a-1) CONST0
CONST1 MARK_X [$2a>0] : MARK_X($2a-1) CONST1
CONST_1 MARK_X [$2a>0] : MARK_X($2a-1) CONST_1
NEG_NUMBER MARK_X [$2a>0] : MARK_X($2a-1) NEG_NUMBER($1a)
GLOBAL MARK_X [$2a>0] : MARK_X($2a-1) GLOBAL($1a)
MARK_APPLY MARK_X [$2a>0] : MARK_X($2a-1) MARK_APPLY($1a)
CONSTANT MARK_X [$2a>0] : MARK_X($2a-1) CONSTANT($1a)
FLOAT MARK_X [$2a>0] : MARK_X($2a-1) FLOAT($1a)
LFUN MARK_X [$2a>0] : MARK_X($2a-1) LFUN($1a)
LTOSVAL MARK_X [$2a>0] : MARK_X($2a-1) LTOSVAL
LOCAL_LVALUE MARK_X [$2a>1] : MARK_X($2a-2) LOCAL_LVALUE($1a)
|
a96ce9 | 2000-04-19 | Fredrik Hübinette (Hubbe) | | 2_LOCALS MARK_X [$2a>0] : LOCAL($1a) MARK_X($2a-1) LOCAL($1b)
|
596e36 | 1998-03-31 | Fredrik Hübinette (Hubbe) | |
#define BasicBranch2(Branch,Oper,Pre,Post,Variable) \
Variable Branch Pre Variable ($1a) : Variable ($1a) Oper ($2a) Post ; \
ASSIGN_##Variable Branch Pre Variable ($1a) : ASSIGN_##Variable($1a) Oper ($2a) Post ;
#define BasicBranch1(Branch,Oper,Pre,Post) \
BasicBranch2(Branch,Oper,Pre,Post,LOCAL) \
BasicBranch2(Branch,Oper,Pre,Post,GLOBAL)
#define BasicBranch0(Branch,Oper) \
BasicBranch1(Branch,Oper,MARK,MARK_X(1)) \
BasicBranch1(Branch,Oper, , )
BasicBranch0(BRANCH_WHEN_NON_ZERO, BRANCH_AND_POP_WHEN_NON_ZERO)
BasicBranch0(BRANCH_WHEN_ZERO, BRANCH_AND_POP_WHEN_ZERO)
|
a7538d | 1998-05-12 | Fredrik Hübinette (Hubbe) | |
|
dbd32e | 2000-04-26 | Fredrik Hübinette (Hubbe) | | #define SimpleBranch(Sequence,X) \
Sequence BRANCH_WHEN_ZERO Sequence : Sequence BRANCH_AND_POP_WHEN_ZERO ( X ) ; \
Sequence BRANCH_WHEN_ZERO MARK Sequence : Sequence BRANCH_AND_POP_WHEN_ZERO ( X ) MARK_X(1) ;
SimpleBranch( LOCAL_ARROW($1a, $1b), $2a )
SimpleBranch( LOCAL_ARROW($1a, $1b) ARROW($2a), $3a )
SimpleBranch( LOCAL_ARROW($1a, $1b) ARROW($2a) ARROW($3a), $4a )
SimpleBranch( LOCAL_ARROW($1a, $1b) ARROW($2a) ARROW($3a) ARROW($4a), $5a )
|
50d1d6 | 2000-04-30 | Fredrik Hübinette (Hubbe) | | SimpleBranch( GLOBAL_LOCAL_INDEX($1a, $1b) , $2a )
SimpleBranch( LOCAL_LOCAL_INDEX($1a, $1b) , $2a )
|
dbd32e | 2000-04-26 | Fredrik Hübinette (Hubbe) | |
SimpleBranch( GLOBAL($1a) ARROW ($2a), $3a )
|
a96ce9 | 2000-04-19 | Fredrik Hübinette (Hubbe) | | LOCAL ASSIGN_LOCAL_AND_POP : LOCAL_2_LOCAL($2a,$1a)
GLOBAL ASSIGN_LOCAL_AND_POP : GLOBAL_2_LOCAL($1a,$2a)
LOCAL ASSIGN_GLOBAL_AND_POP : LOCAL_2_GLOBAL($2a,$1a)
|
a7538d | 1998-05-12 | Fredrik Hübinette (Hubbe) | |
|
a96ce9 | 2000-04-19 | Fredrik Hübinette (Hubbe) | | LOCAL ARROW : LOCAL_ARROW($2a,$1a)
LOCAL_ARROW BRANCH_WHEN_ZERO: BRANCH_IF_NOT_LOCAL_ARROW($1a,$1b) POINTER($2a)
|
a7538d | 1998-05-12 | Fredrik Hübinette (Hubbe) | |
|
a96ce9 | 2000-04-19 | Fredrik Hübinette (Hubbe) | | GLOBAL LOCAL_INDEX : GLOBAL_LOCAL_INDEX($1a,$2a)
|
a7538d | 1998-05-12 | Fredrik Hübinette (Hubbe) | |
SIZEOF CONST1 BRANCH_WHEN_LT : SIZEOF BRANCH_WHEN_ZERO ($3a)
|
82f8ee | 1998-05-22 | Fredrik Hübinette (Hubbe) | | SIZEOF_LOCAL CONST1 BRANCH_WHEN_LT : SIZEOF_LOCAL($1a) BRANCH_WHEN_ZERO ($3a)
|
a7538d | 1998-05-12 | Fredrik Hübinette (Hubbe) | | SIZEOF CONST0 BRANCH_WHEN_LE : SIZEOF BRANCH_WHEN_ZERO ($3a)
|
82f8ee | 1998-05-22 | Fredrik Hübinette (Hubbe) | | SIZEOF_LOCAL CONST0 BRANCH_WHEN_LE : SIZEOF_LOCAL($1a) BRANCH_WHEN_ZERO ($3a)
|
dd7620 | 1998-05-13 | Fredrik Hübinette (Hubbe) | |
CLEAR_LOCAL DEC_LOCAL_AND_POP($1a) : CONST_1 ASSIGN_LOCAL_AND_POP($1a)
CLEAR_LOCAL INC_LOCAL_AND_POP($1a) : CONST1 ASSIGN_LOCAL_AND_POP($1a)
|
48073b | 1998-09-01 | Fredrik Hübinette (Hubbe) | |
NUMBER POP_VALUE :
STRING POP_VALUE :
FLOAT POP_VALUE :
CONSTANT POP_VALUE :
LOCAL POP_VALUE :
|
421801 | 1999-01-31 | Fredrik Hübinette (Hubbe) | | IDENTIFIER POP_VALUE :
TRAMPOLINE POP_VALUE :
|
6fd517 | 2000-04-25 | Fredrik Hübinette (Hubbe) | |
RECUR RETURN: TAIL_RECUR ($1a)
|
873ceb | 2000-04-30 | Fredrik Hübinette (Hubbe) | |
// This doesn't really work
// MARK TAIL_RECUR : BRANCH ($1a)
|
dbd32e | 2000-04-26 | Fredrik Hübinette (Hubbe) | |
|
bf7e09 | 2000-04-30 | Martin Nilsson | | ASSIGN_LOCAL BRANCH_WHEN_ZERO 2_LOCALS(,$1a) BRANCH_WHEN_EQ : ASSIGN_LOCAL($1a) BRANCH_AND_POP_WHEN_ZERO($2a) LOCAL($3a) BRANCH_WHEN_EQ($4a)
ASSIGN_LOCAL BRANCH_WHEN_ZERO 2_LOCALS(,$1a) BRANCH_WHEN_NE : ASSIGN_LOCAL($1a) BRANCH_AND_POP_WHEN_ZERO($2a) LOCAL($3a) BRANCH_WHEN_NE($4a)
|
dbd32e | 2000-04-26 | Fredrik Hübinette (Hubbe) | |
/* This will facilitate other optimizations I hope */
CLEAR_LOCAL MARK LOCAL [ $1a != $3a ] : MARK LOCAL($3a) CLEAR_LOCAL($1a)
/* The result of this optimization could be reordered... */
CLEAR_LOCAL MARK LOCAL($1a) : MARK CLEAR_LOCAL($1a) CONST0
|