Loading…

Memory allocation and higher-order functions

This paper presents a constant-time marking-collecting algorithm to efficiently implement recursion with a general heap memory rather than with a vectorial stack, in a context of frequent captures of continuations. It has been seen to reduce the 80% garbage collection overhead to less than 5% on ave...

Full description

Saved in:
Bibliographic Details
Main Author: Danvy, O.
Format: Conference Proceeding
Language:English
Subjects:
Online Access:Get full text
Tags: Add Tag
No Tags, Be the first to tag this record!
cited_by
cites
container_end_page 252
container_issue
container_start_page 241
container_title
container_volume
creator Danvy, O.
description This paper presents a constant-time marking-collecting algorithm to efficiently implement recursion with a general heap memory rather than with a vectorial stack, in a context of frequent captures of continuations. It has been seen to reduce the 80% garbage collection overhead to less than 5% on average.The algorithm has been built into a virtual machine to efficiently implement at the assembly level the Actor language PLASMA, an Actor-oriented version of PROLOG and a variant of SCHEME, currently in use on 8086, 68000 and Vax.The rationale to use the heap memory is that continuations are available via a single pointer in a unified memory and can be shared optimally when recurrently captured, which is simply impossible using a strategy based on stack recopy. Further, non-captured continuations can be incrementally garbage collected on the fly.Part I describes the elementary recursive instructions of the virtual machine. Part II presents and proves the marking-collecting strategy. Part III safely generalizes the transformation "call + return = branch" in a way compatible with the possible capture of the current continuation. An appendix relates its integration in the Virtual Scheme Machine supporting Scheme 84.
doi_str_mv 10.1145/29650.29676
format conference_proceeding
fullrecord <record><control><sourceid>proquest_acm_b</sourceid><recordid>TN_cdi_proquest_miscellaneous_31290801</recordid><sourceformat>XML</sourceformat><sourcesystem>PC</sourcesystem><sourcerecordid>31290801</sourcerecordid><originalsourceid>FETCH-LOGICAL-a2026-307f3b8f1456fa2830db45d6426521144725e320fb8e0537f7329afb2e4df00a3</originalsourceid><addsrcrecordid>eNqNkMtOwzAQRS0BEqV0xQ9kgVggUsYzfiRLVJWHVMQG1paT2DSQxhA3C_4et-UDmMXM4h6Nrg5jFxzmnAt5i6WSME9bqyN2BkWpS44k9TGbACnMOQk4ZbMYPyCN1iVpnLCbZ7cJw09muy7UdtuGPrN9k63b97Ub8jA0bsj82Ne7JJ6zE2-76GZ_d8re7pevi8d89fLwtLhb5RYBVU6gPVWFT62Ut1gQNJWQjRKoJKauQqN0hOCrwoEk7TVhaX2FTjQewNKUXR3-fg3he3RxazZtrF3X2d6FMRriWEIBPIHXB9DWG1OF8BkNB7PTYfY6zF6HqYbW-QRf_gOmX-H2W2U</addsrcrecordid><sourcetype>Aggregation Database</sourcetype><iscdi>true</iscdi><recordtype>conference_proceeding</recordtype><pqid>31290801</pqid></control><display><type>conference_proceeding</type><title>Memory allocation and higher-order functions</title><source>Association for Computing Machinery:Jisc Collections:ACM OPEN Journals 2023-2025 (reading list)</source><creator>Danvy, O.</creator><contributor>Wexelblat, Richard L.</contributor><creatorcontrib>Danvy, O. ; Wexelblat, Richard L.</creatorcontrib><description>This paper presents a constant-time marking-collecting algorithm to efficiently implement recursion with a general heap memory rather than with a vectorial stack, in a context of frequent captures of continuations. It has been seen to reduce the 80% garbage collection overhead to less than 5% on average.The algorithm has been built into a virtual machine to efficiently implement at the assembly level the Actor language PLASMA, an Actor-oriented version of PROLOG and a variant of SCHEME, currently in use on 8086, 68000 and Vax.The rationale to use the heap memory is that continuations are available via a single pointer in a unified memory and can be shared optimally when recurrently captured, which is simply impossible using a strategy based on stack recopy. Further, non-captured continuations can be incrementally garbage collected on the fly.Part I describes the elementary recursive instructions of the virtual machine. Part II presents and proves the marking-collecting strategy. Part III safely generalizes the transformation "call + return = branch" in a way compatible with the possible capture of the current continuation. An appendix relates its integration in the Virtual Scheme Machine supporting Scheme 84.</description><identifier>ISSN: 0362-1340</identifier><identifier>ISBN: 0897912357</identifier><identifier>ISBN: 9780897912358</identifier><identifier>DOI: 10.1145/29650.29676</identifier><language>eng</language><publisher>New York, NY, USA: ACM</publisher><subject>Applied computing -- Life and medical sciences -- Computational biology ; Applied computing -- Life and medical sciences -- Genetics ; Applied computing -- Life and medical sciences -- Systems biology ; Computing methodologies -- Artificial intelligence -- Knowledge representation and reasoning -- Cognitive robotics ; Computing methodologies -- Artificial intelligence -- Philosophical/theoretical foundations of artificial intelligence -- Cognitive science ; Hardware -- Integrated circuits -- Semiconductor memory ; Information systems -- Information storage systems -- Storage management ; Software and its engineering -- Software notations and tools -- General programming languages -- Language types ; Software and its engineering -- Software organization and properties -- Contextual software domains -- Operating systems -- File systems management ; Software and its engineering -- Software organization and properties -- Contextual software domains -- Operating systems -- Memory management</subject><ispartof>Papers of the Symposium on Interpreters and interpretive techniques, 1987, p.241-252</ispartof><rights>1987 ACM</rights><oa>free_for_read</oa><woscitedreferencessubscribed>false</woscitedreferencessubscribed></display><links><openurl>$$Topenurl_article</openurl><openurlfulltext>$$Topenurlfull_article</openurlfulltext><thumbnail>$$Tsyndetics_thumb_exl</thumbnail><link.rule.ids>309,310,776,780,785,786,23909,23910,25118,27902</link.rule.ids></links><search><contributor>Wexelblat, Richard L.</contributor><creatorcontrib>Danvy, O.</creatorcontrib><title>Memory allocation and higher-order functions</title><title>Papers of the Symposium on Interpreters and interpretive techniques</title><description>This paper presents a constant-time marking-collecting algorithm to efficiently implement recursion with a general heap memory rather than with a vectorial stack, in a context of frequent captures of continuations. It has been seen to reduce the 80% garbage collection overhead to less than 5% on average.The algorithm has been built into a virtual machine to efficiently implement at the assembly level the Actor language PLASMA, an Actor-oriented version of PROLOG and a variant of SCHEME, currently in use on 8086, 68000 and Vax.The rationale to use the heap memory is that continuations are available via a single pointer in a unified memory and can be shared optimally when recurrently captured, which is simply impossible using a strategy based on stack recopy. Further, non-captured continuations can be incrementally garbage collected on the fly.Part I describes the elementary recursive instructions of the virtual machine. Part II presents and proves the marking-collecting strategy. Part III safely generalizes the transformation "call + return = branch" in a way compatible with the possible capture of the current continuation. An appendix relates its integration in the Virtual Scheme Machine supporting Scheme 84.</description><subject>Applied computing -- Life and medical sciences -- Computational biology</subject><subject>Applied computing -- Life and medical sciences -- Genetics</subject><subject>Applied computing -- Life and medical sciences -- Systems biology</subject><subject>Computing methodologies -- Artificial intelligence -- Knowledge representation and reasoning -- Cognitive robotics</subject><subject>Computing methodologies -- Artificial intelligence -- Philosophical/theoretical foundations of artificial intelligence -- Cognitive science</subject><subject>Hardware -- Integrated circuits -- Semiconductor memory</subject><subject>Information systems -- Information storage systems -- Storage management</subject><subject>Software and its engineering -- Software notations and tools -- General programming languages -- Language types</subject><subject>Software and its engineering -- Software organization and properties -- Contextual software domains -- Operating systems -- File systems management</subject><subject>Software and its engineering -- Software organization and properties -- Contextual software domains -- Operating systems -- Memory management</subject><issn>0362-1340</issn><isbn>0897912357</isbn><isbn>9780897912358</isbn><fulltext>true</fulltext><rsrctype>conference_proceeding</rsrctype><creationdate>1987</creationdate><recordtype>conference_proceeding</recordtype><recordid>eNqNkMtOwzAQRS0BEqV0xQ9kgVggUsYzfiRLVJWHVMQG1paT2DSQxhA3C_4et-UDmMXM4h6Nrg5jFxzmnAt5i6WSME9bqyN2BkWpS44k9TGbACnMOQk4ZbMYPyCN1iVpnLCbZ7cJw09muy7UdtuGPrN9k63b97Ub8jA0bsj82Ne7JJ6zE2-76GZ_d8re7pevi8d89fLwtLhb5RYBVU6gPVWFT62Ut1gQNJWQjRKoJKauQqN0hOCrwoEk7TVhaX2FTjQewNKUXR3-fg3he3RxazZtrF3X2d6FMRriWEIBPIHXB9DWG1OF8BkNB7PTYfY6zF6HqYbW-QRf_gOmX-H2W2U</recordid><startdate>19870701</startdate><enddate>19870701</enddate><creator>Danvy, O.</creator><general>ACM</general><scope>7SC</scope><scope>8FD</scope><scope>JQ2</scope><scope>L7M</scope><scope>L~C</scope><scope>L~D</scope></search><sort><creationdate>19870701</creationdate><title>Memory allocation and higher-order functions</title><author>Danvy, O.</author></sort><facets><frbrtype>5</frbrtype><frbrgroupid>cdi_FETCH-LOGICAL-a2026-307f3b8f1456fa2830db45d6426521144725e320fb8e0537f7329afb2e4df00a3</frbrgroupid><rsrctype>conference_proceedings</rsrctype><prefilter>conference_proceedings</prefilter><language>eng</language><creationdate>1987</creationdate><topic>Applied computing -- Life and medical sciences -- Computational biology</topic><topic>Applied computing -- Life and medical sciences -- Genetics</topic><topic>Applied computing -- Life and medical sciences -- Systems biology</topic><topic>Computing methodologies -- Artificial intelligence -- Knowledge representation and reasoning -- Cognitive robotics</topic><topic>Computing methodologies -- Artificial intelligence -- Philosophical/theoretical foundations of artificial intelligence -- Cognitive science</topic><topic>Hardware -- Integrated circuits -- Semiconductor memory</topic><topic>Information systems -- Information storage systems -- Storage management</topic><topic>Software and its engineering -- Software notations and tools -- General programming languages -- Language types</topic><topic>Software and its engineering -- Software organization and properties -- Contextual software domains -- Operating systems -- File systems management</topic><topic>Software and its engineering -- Software organization and properties -- Contextual software domains -- Operating systems -- Memory management</topic><toplevel>online_resources</toplevel><creatorcontrib>Danvy, O.</creatorcontrib><collection>Computer and Information Systems Abstracts</collection><collection>Technology Research Database</collection><collection>ProQuest Computer Science Collection</collection><collection>Advanced Technologies Database with Aerospace</collection><collection>Computer and Information Systems Abstracts – Academic</collection><collection>Computer and Information Systems Abstracts Professional</collection></facets><delivery><delcategory>Remote Search Resource</delcategory><fulltext>fulltext</fulltext></delivery><addata><au>Danvy, O.</au><au>Wexelblat, Richard L.</au><format>book</format><genre>proceeding</genre><ristype>CONF</ristype><atitle>Memory allocation and higher-order functions</atitle><btitle>Papers of the Symposium on Interpreters and interpretive techniques</btitle><date>1987-07-01</date><risdate>1987</risdate><spage>241</spage><epage>252</epage><pages>241-252</pages><issn>0362-1340</issn><isbn>0897912357</isbn><isbn>9780897912358</isbn><abstract>This paper presents a constant-time marking-collecting algorithm to efficiently implement recursion with a general heap memory rather than with a vectorial stack, in a context of frequent captures of continuations. It has been seen to reduce the 80% garbage collection overhead to less than 5% on average.The algorithm has been built into a virtual machine to efficiently implement at the assembly level the Actor language PLASMA, an Actor-oriented version of PROLOG and a variant of SCHEME, currently in use on 8086, 68000 and Vax.The rationale to use the heap memory is that continuations are available via a single pointer in a unified memory and can be shared optimally when recurrently captured, which is simply impossible using a strategy based on stack recopy. Further, non-captured continuations can be incrementally garbage collected on the fly.Part I describes the elementary recursive instructions of the virtual machine. Part II presents and proves the marking-collecting strategy. Part III safely generalizes the transformation "call + return = branch" in a way compatible with the possible capture of the current continuation. An appendix relates its integration in the Virtual Scheme Machine supporting Scheme 84.</abstract><cop>New York, NY, USA</cop><pub>ACM</pub><doi>10.1145/29650.29676</doi><tpages>12</tpages><oa>free_for_read</oa></addata></record>
fulltext fulltext
identifier ISSN: 0362-1340
ispartof Papers of the Symposium on Interpreters and interpretive techniques, 1987, p.241-252
issn 0362-1340
language eng
recordid cdi_proquest_miscellaneous_31290801
source Association for Computing Machinery:Jisc Collections:ACM OPEN Journals 2023-2025 (reading list)
subjects Applied computing -- Life and medical sciences -- Computational biology
Applied computing -- Life and medical sciences -- Genetics
Applied computing -- Life and medical sciences -- Systems biology
Computing methodologies -- Artificial intelligence -- Knowledge representation and reasoning -- Cognitive robotics
Computing methodologies -- Artificial intelligence -- Philosophical/theoretical foundations of artificial intelligence -- Cognitive science
Hardware -- Integrated circuits -- Semiconductor memory
Information systems -- Information storage systems -- Storage management
Software and its engineering -- Software notations and tools -- General programming languages -- Language types
Software and its engineering -- Software organization and properties -- Contextual software domains -- Operating systems -- File systems management
Software and its engineering -- Software organization and properties -- Contextual software domains -- Operating systems -- Memory management
title Memory allocation and higher-order functions
url http://sfxeu10.hosted.exlibrisgroup.com/loughborough?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&ctx_tim=2025-01-31T05%3A00%3A42IST&url_ver=Z39.88-2004&url_ctx_fmt=infofi/fmt:kev:mtx:ctx&rfr_id=info:sid/primo.exlibrisgroup.com:primo3-Article-proquest_acm_b&rft_val_fmt=info:ofi/fmt:kev:mtx:book&rft.genre=proceeding&rft.atitle=Memory%20allocation%20and%20higher-order%20functions&rft.btitle=Papers%20of%20the%20Symposium%20on%20Interpreters%20and%20interpretive%20techniques&rft.au=Danvy,%20O.&rft.date=1987-07-01&rft.spage=241&rft.epage=252&rft.pages=241-252&rft.issn=0362-1340&rft.isbn=0897912357&rft.isbn_list=9780897912358&rft_id=info:doi/10.1145/29650.29676&rft_dat=%3Cproquest_acm_b%3E31290801%3C/proquest_acm_b%3E%3Cgrp_id%3Ecdi_FETCH-LOGICAL-a2026-307f3b8f1456fa2830db45d6426521144725e320fb8e0537f7329afb2e4df00a3%3C/grp_id%3E%3Coa%3E%3C/oa%3E%3Curl%3E%3C/url%3E&rft_id=info:oai/&rft_pqid=31290801&rft_id=info:pmid/&rfr_iscdi=true