Abstract. The semantics of some dynamic programming languages, in-cluding Python, JavaScript, and R5RS Scheme, make it hard for a com-piler to inline predefined procedures without compromising the semantics of the language. In the case of Scheme, many existing compilers can only achieve good execution speed by assuming that variables bound to pre-defined procedures are never mutated. This paper presents a speculative inlining approach which is portable and achieves good performance while fully conforming to the semantics of Scheme. It has been implemented in a mature Scheme to C compiler and we report on its performance on a large benchmark suite, both in execution speed and code size.
A flow-directed inlining strategy uses information derived from control-flow analysis to specialize ...
International audienceJust-in-time compilers for dynamic languages routinely generate code under ass...
Inlining is an important optimization that can lead to significant runtime improvements. When decidi...
Function inlining is a well known compiler optimization where a function call issubstituted with the...
The decision to inline a procedure in the Open Research Compiler (ORC) was based on a temperature he...
International audienceHigh-performance dynamic language implementations make heavy use of speculativ...
The major specific contributions are: (1) We introduce a new compiler analysis to identify the memor...
One way to make compilers portable is to have them compile to an intermediate language which is impl...
Function inlining is a widely known technique which has been used to improve program performance. In...
Many dynamic languages such as Ruby, Python and Perl offer some kind of functionality for writing pa...
Many modern programming languages offer a facility for "inlining" designated procedure and...
Interpreters have a bad reputation for having lower perfor-mance than just-in-time compilers. We pre...
We present a series of CPS-based intermediate languages suitable for functional language compilation...
This work was also published as a Rice University thesis/dissertation: http://hdl.handle.net/1911/16...
Compilers for higher-order programming languages like Scheme, ML, and Lisp can be broadly characteri...
A flow-directed inlining strategy uses information derived from control-flow analysis to specialize ...
International audienceJust-in-time compilers for dynamic languages routinely generate code under ass...
Inlining is an important optimization that can lead to significant runtime improvements. When decidi...
Function inlining is a well known compiler optimization where a function call issubstituted with the...
The decision to inline a procedure in the Open Research Compiler (ORC) was based on a temperature he...
International audienceHigh-performance dynamic language implementations make heavy use of speculativ...
The major specific contributions are: (1) We introduce a new compiler analysis to identify the memor...
One way to make compilers portable is to have them compile to an intermediate language which is impl...
Function inlining is a widely known technique which has been used to improve program performance. In...
Many dynamic languages such as Ruby, Python and Perl offer some kind of functionality for writing pa...
Many modern programming languages offer a facility for "inlining" designated procedure and...
Interpreters have a bad reputation for having lower perfor-mance than just-in-time compilers. We pre...
We present a series of CPS-based intermediate languages suitable for functional language compilation...
This work was also published as a Rice University thesis/dissertation: http://hdl.handle.net/1911/16...
Compilers for higher-order programming languages like Scheme, ML, and Lisp can be broadly characteri...
A flow-directed inlining strategy uses information derived from control-flow analysis to specialize ...
International audienceJust-in-time compilers for dynamic languages routinely generate code under ass...
Inlining is an important optimization that can lead to significant runtime improvements. When decidi...