Abstract
Modern programming languages and operating systems use heap memory
that allows allocation and deallocation of memory to be decoupled, so
they don't follow a stack discipline. Axelsen and Glück have
presented a reversible heap manager where allocation and deallocation
are each other's logical inverses: Freeing a block of memory is done
by running the allocation procedure backwards.
Axelsen and Glück use this heap manager to sketch implementation of a
simple reversible functional language where pattern matching a
constructor is the inverse of construction, so pattern-matching
implies deallocation. This requires the language to be linear: A
pointer can not be copied and it can only be eliminated by
deallocating the node to which it points.
We overcome this limitation by adding reference counts to nodes:
Copying a pointer to a node increases the reference count of the node
and eliminating a pointer decreases the reference count. We show
reversible implementations of operations on nodes with reference
counts. We then show these operations can be used when implementing a
reversible functional language RCFUN to the reversible imperative
language Janus.
that allows allocation and deallocation of memory to be decoupled, so
they don't follow a stack discipline. Axelsen and Glück have
presented a reversible heap manager where allocation and deallocation
are each other's logical inverses: Freeing a block of memory is done
by running the allocation procedure backwards.
Axelsen and Glück use this heap manager to sketch implementation of a
simple reversible functional language where pattern matching a
constructor is the inverse of construction, so pattern-matching
implies deallocation. This requires the language to be linear: A
pointer can not be copied and it can only be eliminated by
deallocating the node to which it points.
We overcome this limitation by adding reference counts to nodes:
Copying a pointer to a node increases the reference count of the node
and eliminating a pointer decreases the reference count. We show
reversible implementations of operations on nodes with reference
counts. We then show these operations can be used when implementing a
reversible functional language RCFUN to the reversible imperative
language Janus.
Originalsprog | Engelsk |
---|---|
Titel | Reversible Computation : 6th International Conference, RC 2014, Kyoto, Japan, July 10-11, 2014. Proceedings |
Redaktører | Shigeru Yamashita, Shin-ichi Minato |
Antal sider | 13 |
Forlag | Springer |
Publikationsdato | 2014 |
Sider | 82-94 |
ISBN (Trykt) | 978-3-319-08493-0 |
ISBN (Elektronisk) | 978-3-319-08494-7 |
DOI | |
Status | Udgivet - 2014 |
Begivenhed | 6th International Conference on Reversible Computation - Kyoto, Japan Varighed: 10 jul. 2014 → 11 jul. 2014 Konferencens nummer: 6 |
Konference
Konference | 6th International Conference on Reversible Computation |
---|---|
Nummer | 6 |
Land/Område | Japan |
By | Kyoto |
Periode | 10/07/2014 → 11/07/2014 |
Navn | Lecture notes in computer science |
---|---|
Vol/bind | 8507 |
ISSN | 0302-9743 |
Bibliografisk note
@inproceedings{DBLP:conf/rc/Mogensen14,author = {Torben {\AE}gidius Mogensen},
title = {Reference Counting for Reversible Languages},
booktitle = {Reversible Computation - 6th International Conference, {RC} 2014,
Kyoto, Japan, July 10-11, 2014. Proceedings},
pages = {82--94},
year = {2014},
crossref = {DBLP:conf/rc/2014},
url = {http://dx.doi.org/10.1007/978-3-319-08494-7_7},
doi = {10.1007/978-3-319-08494-7_7},
timestamp = {Mon, 07 Jul 2014 13:59:14 +0200},
biburl = {http://dblp.uni-trier.de/rec/bib/conf/rc/Mogensen14},
bibsource = {dblp computer science bibliography, http://dblp.org}
}