I have stripped down and reimplemented the type propagator. Right now it is kind of stable and implements forward type propagation for most forms. You will see, however, some harmless notes such as the following one.<div><div>

;;; Note:</div><div>;;;   Refusing to propagate FUNCTION</div><div><br></div><div>The result is that some benchmarks are now dominated by stupid statements in them (ASSERT) (SBCL first column, ECL tonight second, ECL 10.4.1 last) </div>

<div><br></div><div><div>1D-ARRAYS                [      0.03]   1.00  2.67</div><div>2D-ARRAYS                [      0.24]   3.04  7.17</div><div>3D-ARRAYS                [      0.68]   2.19  11.78</div><div><br></div><div>

Other benchmarks got a little bit worse because while the type information is better, the inliner can not handle all that information so accurately. For instance addition, multiplication, etc, are not inlined unless the destination of the value is declared or inferred to have a real type.</div>

<div><br></div><div>Please understand that the CVS tree remains unstable. In particular these and the changes to come are quite critical in the sense that wrong type information can cause ECL to produce *wrong* code, specially with low safety settings. That said, feel free to report problems or improvements!</div>

<div><br></div><div>Juanjo</div></div><br>-- <br>Instituto de Física Fundamental, CSIC<br>c/ Serrano, 113b, Madrid 28006 (Spain) <br><a href="http://tream.dreamhosters.com">http://tream.dreamhosters.com</a><br>
</div>