Factor/To do/Compiler
            
	
	
	
	
		 high level optimizer 
-  don't inline push, unless we have a non-vector, pointless
-  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
-  inlining heuristic: number of usages within this word
-  fix predicate propagation
-  [ 1 2 <cursor> ] [ f ] if dup [ A ] [ B ] ifwe need better constraints so that A has slots
-  loop inversion
-  perhaps interval inference is unsound for fixnum+fast etc?
-  branch fusion
-  growable resize computation may overflow with 3 but not2  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!
-  SPECIAL: foo-- compile versions of foo for different input classes
 low level optimizer 
-  once low level IR is SSA, we don't have to spill a live interval which has already been spilled once
-  fixnum+doesn't have an intrinsic anymore
-  notand>booleanshould be branchless;neq?primitive
done:
-  dispatch branch alignment off
-  spilling: align stack on windows (or use unaligned load/store insns?), leave room in stack frame for integer and float spills, resolve pass
-  need an optimizer pass to get rid of jumps to returns and jumps to jumps
 
	
		This revision created on Tue, 4 Nov 2008 06:48:31 by slava