Lightweight Lexical Closures for Legitimate Execution Stack Access.

Autor: Mycroft, Alan, Zeller, Andreas, Yasugi, Masahiro, Hiraishi, Tasuku, Yuasa, Taiichi
Zdroj: Compiler Construction (9783540330509); 2006, p170-184, 15p
Abstrakt: We propose a new language concept called "L-closures" for a running program to legitimately inspect/modify the contents of its execution stack. L-closures are lightweight lexical closures created by evaluating nested function definitions. A lexical closure can access the lexically-scoped variables in the creation-time environment and indirect calls to it provide legitimate stack access. By using an intermediate language extended with L-closures in high-level compilers, high-level services such as garbage collection, check-pointing, multithreading and load balancing can be implemented elegantly and efficiently. Each variable accessed by an L-closure uses private and shared locations for giving the private location a chance to get a register. Operations to keep coherency with shared locations as well as operations to initialize L-closures are delayed until an L-closure is actually invoked. Because most high-level services create L-closures very frequently but call them infrequently (e.g., to scan roots in garbage collection), the total overhead can be reduced significantly. Since the GNU C compiler provides nested functions, we enhanced GCC at relatively low implementation costs. The results of performance measurements exhibit quite low costs of creating and maintaining L-closures. [ABSTRACT FROM AUTHOR]
Databáze: Supplemental Index