The runtime systems in Ericsson's implementations of the Erlang programming language, up to and including release R6B, use a simple tag scheme which allows for fast computation of an object's type. However, the tag scheme also restricts all Erlang objects to a 28- or 30-bit address space. This is problematic when Erlang is ported to new systems, and reduces reliability for applications needing large amounts of memory.
This paper describes the development of a new staged tag scheme, which was designed to not restrict the range of pointers, and thus eliminate the source of the abovementioned problems. Secondary benefits also followed: the staged tag scheme is more flexible, and, perhaps surprisingly, is actually more efficient.
The staged tag scheme has been integrated into Ericsson's Erlang code, and is a standard feature starting with release R7A.
Download BibTeX entry.