Re: gsoc: 2/3 progress, summary

Jean Louis <[email protected]> Mon, 9 Jul 2018 22:17:41 +0200
Newsgroups gmane.lisp.clisp.devel
Message-ID <[email protected]>
Where do I get that development version?

Jean

On Mon, Jul 09, 2018 at 03:24:40PM -0400, Charles Zhang wrote:
> Hello clisp,
> 
> For this period many correctness bugs in the new compiler were fixed,
> with multiple self compiles possible without any detectable oddities.
> 
> A few new dataflow passes and better code generation has been
> implemented. Some highlights:
> 
> - SSA conditional constant propagation, which can fold code like
> (lambda () (let ((i 0) a b c d)
>                           (values
>                            (and (setq a (setq i (1+ i)))
>                                 (setq b (setq i (1+ i)))
>                                 (setq c (setq i (1+ i)))
>                                 (setq d (setq i (1+ i))))
>                            i a b c d)))
> into (values 4 4 1 2 3 4). Very useful for macro heavy code.
> - Loop invariant hoisting. Useful for numeric code with arrays/matrices.
> - Prototype value numbering with Kildall. Good for some forms of
> redundant expression elimination.
> - Better dead code elimination detection with respect to multiple values.
> Code generation improvements:
> - Better instruction selection for branches
> - Inlined multiple-values instructions. No more consing and improved
> self compile time from 55 seconds to 42 seconds.
> - Inlined funcall
> - Much better instruction selection for various CALL instructions
> - Some form of basic block scheduling, to remove JMPs from LAP.
> - Extra LOAD/PUSH/STOREs eliminated. The code looks more like stack
> machine code.
> 
> Some optimizations were made to make the compiler faster as well, by
> paying more attention to the speed of convergence of some dataflow
> analysis algorithms.
> 
> Some goals for next period:
> - Using escape analysis to see when closures can be eliminated; e.g.
> by lambda lifting closed over values in non escaping nested functions.
> - Integrating value numbering analysis
> - Loop induction variable analysis
> - Making the compiler faster by ordering flow nodes properly in
> dataflow analysis.
> - Try to experiment with untyped instructions and type inference.
> - Local function inlining with Robert Strandh's partial inlining
> technique, which was recently presented at ELS.
> - Inlining in general.
> 
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> clisp-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/clisp-devel

-- 
Jean Louis

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
clisp-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/clisp-devel