An Optimizing Backend for the ML Kit Using a Stack of Regions
暂无分享,去创建一个
Recent research has shown that static memory management is a promising alternative to runtime garbage collection in higher order functional programming languages. Region inference determines where in a program memory can be allocated and deallocated in a stack like manner. We present an optimizing backend for the ML Kit compiler building on region inference. As intermediate representation we use nested basic blocks. This representation allows optimizing transformations such as copy propagation, dead code elimination and register allocation to be more precise than if conventional at basic blocks were used. We have implemented a code generator for the HPPA RISC architecture and experiments show that we in some cases generate faster code than the Standard ML of New Jersey compiler. In general, experiments show that the region based ML Kit compiler, when using our optimizing backend is comparable to the Standard ML of New Jersey compiler, not only regarding memory usage but also regarding execution time.
[1] Andrew W. Appel,et al. Compiling with Continuations , 1991 .
[2] Robin Milner,et al. Definition of standard ML , 1990 .
[3] Robin Milner,et al. Commentary on standard ML , 1990 .
[4] Chris Reade,et al. Elements of functional programming , 1989, International computer science series.
[5] Bruce K. Haddon. Hewlett Packard , 1993, Analytical chemistry.