summaryrefslogtreecommitdiff
path: root/docs/StackMaps.rst
diff options
context:
space:
mode:
authorJuergen Ributzka <juergen@apple.com>2014-03-31 22:14:04 +0000
committerJuergen Ributzka <juergen@apple.com>2014-03-31 22:14:04 +0000
commitd8c9577764c8277ce17446595f5af5c857385a41 (patch)
tree9ef6719bfaafa04b2e3c1fd45bd7a4c6e0f4ed88 /docs/StackMaps.rst
parent4ffbb65494d1991993c0fb7cc4f999e96a799af8 (diff)
downloadllvm-d8c9577764c8277ce17446595f5af5c857385a41.tar.gz
llvm-d8c9577764c8277ce17446595f5af5c857385a41.tar.bz2
llvm-d8c9577764c8277ce17446595f5af5c857385a41.tar.xz
[Stackmaps] Update the stackmap format to use 64-bit relocations for the function address and properly align all entries.
This commit updates the stackmap format to version 1 to indicate the reorganizaion of several fields. This was done in order to align stackmap entries to their natural alignment and to minimize padding. Fixes <rdar://problem/16005902> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205254 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'docs/StackMaps.rst')
-rw-r--r--docs/StackMaps.rst16
1 files changed, 11 insertions, 5 deletions
diff --git a/docs/StackMaps.rst b/docs/StackMaps.rst
index 57c37ea2f5..373596df8c 100644
--- a/docs/StackMaps.rst
+++ b/docs/StackMaps.rst
@@ -313,17 +313,21 @@ format of this section follows:
.. code-block:: none
- uint32 : Reserved (header)
+ Header {
+ uint8 : Stack Map Version (current version is 1)
+ uint8 : Reserved (expected to be 0)
+ uint16 : Reserved (expected to be 0)
+ }
uint32 : NumFunctions
+ uint32 : NumConstants
+ uint32 : NumRecords
StkSizeRecord[NumFunctions] {
- uint32 : Function Offset
- uint32 : Stack Size
+ uint64 : Function Address
+ uint64 : Stack Size
}
- uint32 : NumConstants
Constants[NumConstants] {
uint64 : LargeConstant
}
- uint32 : NumRecords
StkMapRecord[NumRecords] {
uint64 : PatchPoint ID
uint32 : Instruction Offset
@@ -335,12 +339,14 @@ format of this section follows:
uint16 : Dwarf RegNum
int32 : Offset or SmallConstant
}
+ uint16 : Padding
uint16 : NumLiveOuts
LiveOuts[NumLiveOuts]
uint16 : Dwarf RegNum
uint8 : Reserved
uint8 : Size in Bytes
}
+ uint32 : Padding (only if required to align to 8 byte)
}
The first byte of each location encodes a type that indicates how to