Dynamic scripting languages offer programmers increased flexibility by allowing properties of programs to be defined at run-time. Typically, program execution begins with an interpreter where type checks are implemented using conditional statements. Recent JIT compilers have begun removing run-time checks by specializing native code to program properties discovered at JIT time.This paper presents a novel intermediate representation for scripting languages that explicitly encodes types of variables. The dynamic representation is a flow graph, where each node is a specialized virtual instruction and each edge directs program flow based on control and type changes in the program. The interpreter thus performs specialized execution of whole programs. We present techniques for the efficient interpretation of our representation showing speed-ups of greater than 2x over static interpretation, with an average speed-up of approximately 1.3x.
Description
Dynamic interpretation for dynamic scripting languages
%0 Conference Paper
%1 Williams:2010:DID:1772954.1772993
%A Williams, Kevin
%A McCandless, Jason
%A Gregg, David
%B Proceedings of the 8th annual IEEE/ACM international symposium on Code generation and optimization
%C New York, NY, USA
%D 2010
%I ACM
%K AST Bytecode Flowgraph Interpretation Interpreter dynamic graph optimization speedup
%P 278--287
%R 10.1145/1772954.1772993
%T Dynamic Interpretation for Dynamic Scripting Languages
%U /brokenurl#10.1145/1772954.1772993
%X Dynamic scripting languages offer programmers increased flexibility by allowing properties of programs to be defined at run-time. Typically, program execution begins with an interpreter where type checks are implemented using conditional statements. Recent JIT compilers have begun removing run-time checks by specializing native code to program properties discovered at JIT time.This paper presents a novel intermediate representation for scripting languages that explicitly encodes types of variables. The dynamic representation is a flow graph, where each node is a specialized virtual instruction and each edge directs program flow based on control and type changes in the program. The interpreter thus performs specialized execution of whole programs. We present techniques for the efficient interpretation of our representation showing speed-ups of greater than 2x over static interpretation, with an average speed-up of approximately 1.3x.
%@ 978-1-60558-635-9
@inproceedings{Williams:2010:DID:1772954.1772993,
abstract = {Dynamic scripting languages offer programmers increased flexibility by allowing properties of programs to be defined at run-time. Typically, program execution begins with an interpreter where type checks are implemented using conditional statements. Recent JIT compilers have begun removing run-time checks by specializing native code to program properties discovered at JIT time.This paper presents a novel intermediate representation for scripting languages that explicitly encodes types of variables. The dynamic representation is a flow graph, where each node is a specialized virtual instruction and each edge directs program flow based on control and type changes in the program. The interpreter thus performs specialized execution of whole programs. We present techniques for the efficient interpretation of our representation showing speed-ups of greater than 2x over static interpretation, with an average speed-up of approximately 1.3x.},
acmid = {1772993},
added-at = {2010-08-12T12:25:24.000+0200},
address = {New York, NY, USA},
author = {Williams, Kevin and McCandless, Jason and Gregg, David},
biburl = {https://www.bibsonomy.org/bibtex/2738d69a0ffd40148f2f172d37eba63d6/gron},
booktitle = {Proceedings of the 8th annual IEEE/ACM international symposium on Code generation and optimization},
description = {Dynamic interpretation for dynamic scripting languages},
doi = {10.1145/1772954.1772993},
interhash = {83f203366fc5862b459fbc1afb053dd9},
intrahash = {738d69a0ffd40148f2f172d37eba63d6},
isbn = {978-1-60558-635-9},
keywords = {AST Bytecode Flowgraph Interpretation Interpreter dynamic graph optimization speedup},
location = {Toronto, Ontario, Canada},
numpages = {10},
pages = {278--287},
publisher = {ACM},
series = {CGO '10},
timestamp = {2010-08-12T12:25:24.000+0200},
title = {Dynamic Interpretation for Dynamic Scripting Languages},
url = {/brokenurl#10.1145/1772954.1772993},
year = 2010
}