Factor/To do/Compiler
high level optimizer
- don't inline push, unless we have a non-vector, pointless
- dispatch branch alignment off
- remove support for 'f' from intervals
- add identities for integer math
- partial dispatch ops should be flushable, and should have input-classes decls
- speed up binary-reduce
- compile range iteration better
- strength reduction
- inlining heuristic: number of usages within this word
- fix predicate propagation
-
[ 1 2 <cursor> ] [ f ] if dup [ A ] [ B ] if
we need better constraints so that A has slots - loop inversion
- perhaps interval inference is unsound for fixnum+fast etc?
- branch fusion
- strength reduction should deal with
0 [ + ] reduce >fixnum
- growable resize computation may overflow with
3
but not 2 1+
if we change =, we can do this,
[ dup 0.0 eq? [ dup 0 eq? [ ] [ ] if ] [ ] if ] should not optimize
[ dup 0.0 eq? [ dup 0 = [ ] [ ] if ] [ ] if ] should
[ dup 0.0 = [ dup 0 eq? [ ] [ ] if ] [ ] if ] should not optimize
[ dup 0.0 = [ dup 0 = [ ] [ ] if ] [ ] if ] should
[ dup 0.0 = [ 3 * ] when ] should
[ dup 0.0 number= [ 3 * ] when ] should
-
[ <=> ] sort [ <=> ] sort [ <=> ] sort
-- still doesn't scale linearly - peg.javascript.parser take long time to load
- remove-mixin-instance takes a long time
- fixnum/i --> fixnum/i-fast if denominator is positive!
- fold 'class'
- remove pool-db-test file...
- <range> is slow;
/ 1 + 0 max >integer
no good
low level optimizer
- spilling
- need an optimizer pass to get rid of jumps to returns and jumps to jumps
VM
- we can use memsetpattern to initialize strings, arrays on OS X 10.5
This revision created on Mon, 29 Sep 2008 02:23:09 by slava