Return to peeprules.vmg CVS log | Up to [gforth] / gforth |
made classical 1-register stack caching work again (and probably general stack caching with non-empty canonical state). There was a subtle bug involving ?DUP-?BRANCH. made this the default for gforth-fast and turned off anything beyond deleted the now-unused rewrite_bb().
1: \ taken from David Gregg's EuroForth 2001 paper; omitted some sequences 2: super1 = lit + 3: super2 = lit call 4: super3 = lit @ 5: super4 = lit @ call 6: super5 = @ call 7: super6 = lit ! 8: super7 = lit lit 9: super8 = dup lit 10: super9 = ! lit 11: super10 = lit ! lit 12: super11 = ! ;s 13: super12 = lit + @ 14: super13 = 0= ?branch 15: super14 = dup call 16: super15 = useraddr @ 17: super16 = + @ 18: super17 = lit @ ?branch 19: super18 = lit ! ;s 20: super19 = lit @ and 21: super20 = = ?branch 22: super21 = lit lit ! 23: super22 = @ ?branch 24: super23 = useraddr ! 25: super24 = dup ?branch 26: super25 = @ ;s 27: super26 = lit @ + 28: super27 = dup @ 29: 30: \ \F 0 [if] 31: 32: \ \ \E prim-states ;s \ 2950159 33: \ \E prim-states lit \ 2802835 34: \ \ \E prim-states call \ 2558373 35: \ \E prim-states @ \ 2244351 36: \ \E branch-states ?branch \ 1134432 37: \ \E prim-states lit@ \ 1051813 38: \ \E prim-states swap \ 737988 39: \ \E S0 S2 state-prim swap 40: \ \E S1 S2 state-prim swap 41: \ \E S2 S3 state-prim swap 42: \ \E S3 S2 state-prim swap 43: \ \E prim-states c@ \ 651406 44: \ \E prim-states = \ 590006 45: \ \E prim-states 0= \ 584487 46: \ \E prim-states dup \ 566855 47: \ \E S0 S1 state-prim dup 48: \ \E prim-states + \ 566003 49: \ \E prim-states i \ 502908 50: \ \E prim-states +! \ 448925 51: \ \ \E prim-states branch \ 409561 52: \ \ \E prim-states (loop) \ 379646 53: \ \ \E prim-states lp! \ 326743 54: \ \E prim-states and \ 309427 55: \ \E prim-states useraddr \ 303254 56: \ \E prim-states over \ 283556 57: \ \E S0 S1 state-prim over 58: \ \E S1 S2 state-prim over 59: \ \E S2 S1 state-prim over 60: \ \E S3 S2 state-prim over 61: \ \E prim-states negate \ 257417 62: \ \E prim-states cells \ 254644 63: \ \E prim-states rot \ 220273 64: \ \E S3 S1 state-prim rot 65: \ \E S2 S3 state-prim rot 66: \ \E S1 S3 state-prim rot 67: \ \E S0 S3 state-prim rot 68: \ \E prim-states ! \ 218672 69: \ \E prim-states 2dup \ 211315 70: \ \E S0 S2 state-prim 2dup 71: \ \E S1 S3 state-prim 2dup 72: \ \E S2 S2 state-prim 2dup 73: \ \E S3 S1 state-prim 2dup 74: \ \ \E branch-states lit-perform \ 188331 75: \ \E prim-states <> \ 179502 76: \ \E prim-states c! \ 179332 77: \ \E prim-states lit+ \ 179156 78: \ \E prim-states drop \ 173995 79: \ \E S0 S0 state-prim drop 80: \ \E prim-states lshift \ 164671 81: \ \E prim-states /mod \ 164670 82: \ \E prim-states >r \ 145247 83: \ \E prim-states r> \ 133792 84: \ \ \E branch-states does-exec \ 120944 85: \ \E prim-states cell+ \ 116183 86: \ \E prim-states lp+!# \ 106697 \ -- 87: \ \E prim-states - \ 106245 88: \ \E prim-states unloop \ 98938 \ -- 89: \ \E prim-states lp+ \ 87190 \ -- 90: \ \E prim-states >= \ 80994 91: \ \E prim-states tuck \ 78696 92: \ \E S2 S2 state-prim tuck 93: \ \E prim-states /string \ 78595 94: \ \E prim-states char+ \ 77542 95: \ \ \E prim-states ?dup \ 76850 96: \ \E prim-states @local0 \ 75322 97: \ \E prim-states min \ 75264 98: \ \ \E prim-states compare \ 65603 99: \ \E branch-states (u+do) \ 63823 100: \ \ \E prim-states (read-line) \ 63823 101: \ \E prim-states 2>r \ 62646 102: \ \E prim-states 2r> \ 62644 103: \ \E prim-states 2r@ \ 61338 104: \ \E prim-states 2@ \ 61067 105: \ \E prim-states nip \ 54961 106: \ \E S1 S1 state-prim nip 107: \ \E S0 S1 state-prim nip 108: \ \E prim-states within \ 51075 109: \ \E prim-states 1- \ 47441 110: \ \E branch-states execute \ 46674 111: \ \E prim-states lp- \ 45385 112: \ \E branch-states perform \ 38756 113: \ \E prim-states xor \ 35599 114: \ \E prim-states @local# \ 34586 115: \ \ \E prim-states pick \ 32015 116: \ \E prim-states u> \ 29373 117: \ \E prim-states -rot \ 26211 118: \ \E S3 S2 state-prim -rot 119: \ \E S1 S3 state-prim -rot 120: \ \E prim-states 2drop \ 25418 121: \ \E S0 S0 state-prim 2drop 122: \ \E S1 S0 state-prim 2drop 123: \ \ \E prim-states (tablelfind) \ 22243 124: \ \E prim-states or \ 21587 125: \ \E prim-states @local2 \ 20859 126: \ \E branch-states (+loop) \ 20006 127: \ \E prim-states 1+ \ 17944 128: \ \E prim-states rdrop \ 17902 129: \ \E branch-states (?do) \ 17348 130: \ \E prim-states max \ 16948 131: \ \E prim-states 2* \ 15606 132: \ \ \E prim-states filename-match \ 15003 133: \ \ \E prim-states (listlfind) \ 13074 134: \ \ \E prim-states sp@ \ 12741 135: \ \ \E prim-states fp@ \ 12384 136: \ \ \E prim-states um/mod \ 12288 137: \ \E prim-states 2! \ 11904 138: \ \ \E prim-states fill \ 10781 139: \ \ \E prim-states (parse-white) \ 10624 140: \ \E branch-states (do) \ 10516 141: \ \ \E prim-states (hashkey1) \ 10239 142: \ \E prim-states u< \ 9602 143: \ \ \E prim-states write-file \ 8973 144: \ \E prim-states count \ 8873 145: \ \ \E prim-states rp@ \ 8410 146: \ \E prim-states 0< \ 8380 147: \ \E prim-states < \ 7741 148: \ \E prim-states @local1 \ 7458 149: \ \ \E prim-states move \ 7050 150: \ \E prim-states u>= \ 6138 151: \ \E branch-states (+do) \ 5863 152: \ \ \E prim-states va-return-double \ 5517 153: \ \E prim-states um* \ 5342 154: \ \E prim-states toupper \ 3517 155: \ \ \E prim-states f@local1 \ 2907 156: \ \ \E prim-states rp! \ 2859 157: \ \ \E prim-states ?dup-?branch \ 2829 158: \ \E prim-states d+ \ 2671 159: \ \ \E prim-states ftuck \ 2636 160: \ \ \E prim-states read-file \ 2623 161: \ \ \E prim-states ms \ 2454 162: \ \ \E prim-states (s+loop) \ 2429 163: \ \ \E prim-states allocate \ 1869 164: \ \E prim-states * \ 1520 165: \ \E prim-states 0<> \ 925 166: \ \ \E prim-states noop \ 715 167: \ \E prim-states aligned \ 714 168: \ \E prim-states u<= \ 684 169: \ \E prim-states i' \ 684 170: \ \E prim-states > \ 411 171: \ \ \E prim-states (hashlfind) \ 397 172: \ \E prim-states 2swap \ 336 173: \ \E S0 S3 state-prim 2swap 174: \ \E S1 S3 state-prim 2swap 175: \ \E prim-states laddr# \ 335 176: \ \ \E prim-states faxpy \ 286 177: \ \ \E prim-states (next) \ 272 178: \ \ \E prim-states (-loop)-lp+!# \ 248 179: \ \E prim-states <= \ 199 180: \ \E prim-states invert \ 170 181: \ \E branch-states (-do) \ 169 182: \ \E prim-states 2over \ 165 183: \ \E S0 S2 state-prim 2over 184: \ \E S1 S3 state-prim 2over 185: \ \E prim-states under+ \ 154 186: \ \E prim-states dnegate \ 128 187: \ \E prim-states u<> \ 128 188: \ \E prim-states 0> \ 122 189: \ \ \E prim-states (loop)-lp+!# \ 118 190: \ \E prim-states j \ 117 191: \ \E prim-states float+ \ 78 192: \ \ \E prim-states (for) \ 68 193: \ \E prim-states 2rdrop \ 60 \ -- 194: \ \ \E prim-states f! \ 14 195: \ \E prim-states >l \ 14 196: \ \ \E prim-states close-file \ 5 197: \ \ \E prim-states call-c \ 4 198: \ \ \E prim-states reposition-file \ 3 199: \ \E prim-states / \ 3 200: \ \ \E prim-states resize-file \ 2 201: \ \ \E prim-states free \ 2 202: \ \E prim-states 2/ \ 2 203: \ \ \E prim-states up! \ 1 204: \ \ \E prim-states stdin \ 1 205: \ \ \E prim-states key?-file \ 1 206: \ \ \E prim-states flush-icache \ 1 207: \ \ \E prim-states cmove \ 1 208: \ \ \E prim-states (system) \ 1 209: 210: \ \E ' noop is output-nextp0 211: \ \E ' noop is output-nextp1 212: 213: \ \E gen-transitions noop 214: 215: \ \F [ENDIF]