1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-18 18:42:46 +02:00

[docs][Statepoint] Add definitions for base and derived pointers

This section will be expanded over the next few days.  This is just some initial content.

llvm-svn: 246041
This commit is contained in:
Philip Reames 2015-08-26 17:25:36 +00:00
parent 89ece8e139
commit e77dc8a3f2

View File

@ -206,6 +206,23 @@ This example was taken from the tests for the :ref:`RewriteStatepointsForGC` uti
opt -rewrite-statepoints-for-gc test/Transforms/RewriteStatepointsForGC/basics.ll -S | llc -debug-only=stackmaps
Base & Derived Pointers
^^^^^^^^^^^^^^^^^^^^^^^
A base pointer is one which points to the base of an allocation (object). A
derived pointer is one which is offset from a base pointer by some amount.
When relocating objects, a garbage collector needs to be able to relocate each
derived pointer associated with an allocation to the same offset from the new
address.
Derived pointers fall in to two categories:
* "Interior derived pointers" remain within the bounds of the allocation
they're associated with. As a result, the base object can be found at
runtime provided the bounds of allocations are known to the runtime system.
* "Exterior derived pointers" are outside the bounds of the associated object;
they may even fall within *another* allocations address range. As a result,
there is no way for a garbage collector to determine which allocation they
are associated with at runtime and compiler support is needed.
GC Transitions
^^^^^^^^^^^^^^^^^^