Refactored function specialization, so it can be reused is both the type inferencer and the Octave partial evaluator. In fact, it is already used in the new versions of the given tools.
Known issues,
Varargin not yet supported
Add some code to see what is happening, or why something is failing
Recursive functions not yet supported, old type inferencer only supported self-recursion, so will first implement this.
The partial evaluator is now reusing the octave optimizer, Octave-SuperOpt, which combines constant propagation, copy propagation and common subexpression elimination.
Note to self: borrow FC3 DVD from Arthur to gather RPM's for making of an octavec RPM.
January 5th
New year, broken computer. Time to check what is bothering me still in the compiler, results of old code.
String representation in AST
Internal tools in [prefix]/bin directory
Function handle constant propagation
Traversal of pack-octave, should use generic forward dataflow strategy
And a lot more I can't think of at the moment...
2004
December 17th
Working on a rewrite of the type inferencer. Why do I have the need to rewrite everything :-S ? Anyway, it gives a good insight in what as working in the old situation and what wasn't working (correctly).
Today it is times to add the rules for binary operators. Not difficult, just a lot of work. Next issue will be type based function specialization.
When the type inferencer is finished, I will define a backward propagation strategy, which we will use to rewrite optimizations like dead code elimination.
We should definitely look at the following optimizations:
Pre-allocation of arrays, for which we need more shape
information than we calculate at the moment