From folklore to fact: comparing implementations of stacks and continuations
From folklore to fact: comparing implementations of stacks and continuations
复制标题
从民间传说到事实:比较堆栈和延续的实现
DOI:
10.1145/3385412.3385994
复制
发表时间:
2020
期刊:
影响因子:
--
通讯作者:
Reppy, John
中科院分区:
文献类型:
--
作者:
Farvardin, Kavon;Reppy, John
The efficient implementation of function calls and non-local control transfers is a critical part of modern language implementations and is important in the implementation of everything from recursion, higher-order functions, concurrency and coroutines, to task-based parallelism. In a compiler, these features can be supported by a variety of mechanisms, including call stacks, segmented stacks, and heap-allocated continuation closures.An implementor of a high-level language with advanced control features might ask the question ``what is the best choice for my implementation?'' Unfortunately, the current literature does not provide much guidance, since previous studies suffer from various flaws in methodology and are outdated for modern hardware. In the absence of recent, well-normalized measurements and a holistic overview of their implementation specifics, the path of least resistance when choosing a strategy is to trust folklore, but the folklore is also suspect.This paper attempts to remedy this situation by providing an ``apples-to-apples'' comparison of six different approaches to implementing call stacks and continuations. This comparison uses the same source language, compiler pipeline, LLVM-backend, and runtime system, with the only differences being those required by the differences in implementation strategy. We compare the implementation challenges of the different approaches, their sequential performance, and their suitability to support advanced control mechanisms, including supporting heavily threaded code. In addition to the comparison of implementation strategies, the paper's contributions also include a number of useful implementation techniques that we discovered along the way.
登录
查看更多内容
DOI:
--
发表时间:
1994
期刊:
International Conference on Compiler Construction
影响因子:
--
作者:
Lal George;F. Guillame;John H. Reppy
通讯作者:
John H. Reppy
DOI:
--
发表时间:
1999
期刊:
SOEN
影响因子:
--
作者:
John H. Reppy
通讯作者:
John H. Reppy
DOI:
--
发表时间:
1992
期刊:
LISP and Symbolic Computation
影响因子:
--
作者:
A. Appel;Zhong Shao
通讯作者:
Zhong Shao
DOI:
--
发表时间:
1960
期刊:
影响因子:
--
作者:
Edsger W. Dijkstra
通讯作者:
Edsger W. Dijkstra
DOI:
10.1017/cbo9781139174930
发表时间:
1997-01
期刊:
--
影响因子:
--
作者:
A. Appel;Maia Ginsburg
通讯作者:
A. Appel;Maia Ginsburg