mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-27 13:42:24 +00: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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246041 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
0c3c0acf23
commit
7a65f99c13
@ -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
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
Loading…
x
Reference in New Issue
Block a user