Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Commits on Mar 22, 2012
  1. @bufflig
Commits on Feb 28, 2012
  1. @bufflig
Commits on Mar 10, 2010
  1. @bufflig @bjorng

    Store pointers to heap data in 32-bit words

    bufflig authored bjorng committed
    Store Erlang terms in 32-bit entities on the heap, expanding the
    pointers to 64-bit when needed. This works because all terms are stored
    on addresses in the 32-bit address range (the 32 most significant bits
    of pointers to term data are always 0).
    
    Introduce a new datatype called UWord (along with its companion SWord),
    which is an integer having the exact same size as the machine word
    (a void *), but might be larger than Eterm/Uint.
    
    Store code as machine words, as the instructions are pointers to
    executable code which might reside outside the 32-bit address range.
    
    Continuation pointers are stored on the 32-bit stack and hence must
    point to addresses in the low range, which means that loaded beam code
    much be placed in the low 32-bit address range (but, as said earlier,
    the instructions themselves are full words).
    
    No Erlang term data can be stored on C stacks (enforced by an
    earlier commit).
    
    This version gives a prompt, but test cases still fail (and dump core).
    
    The loader (and emulator loop) has instruction packing disabled.
    
    The main issues has been in rewriting loader and actual virtual
    machine. Subsystems (like distribution) does not work yet.
Commits on Feb 6, 2010
  1. @bufflig @bjorng
Something went wrong with that request. Please try again.