diff options
author | Kyungwoo Lee <kyulee@microsoft.com> | 2016-07-20 08:50:22 -0700 |
---|---|---|
committer | Kyungwoo Lee <kyulee@microsoft.com> | 2016-07-20 08:50:22 -0700 |
commit | b37e6fc8f5cd72eaae9258df2158bb85e5ff43dc (patch) | |
tree | 86823d60dc4b835e1210a2dba5ec7116ef5601a5 /src/jit/unwind.h | |
parent | e9774389f13862104605a092921d4e3872524096 (diff) | |
download | coreclr-b37e6fc8f5cd72eaae9258df2158bb85e5ff43dc.tar.gz coreclr-b37e6fc8f5cd72eaae9258df2158bb85e5ff43dc.tar.bz2 coreclr-b37e6fc8f5cd72eaae9258df2158bb85e5ff43dc.zip |
ARM64: Enable Function Fragment
Fixes https://github.com/dotnet/coreclr/issues/6064
Fixes https://github.com/dotnet/coreclr/issues/6122
Basically this enable function fragment.
Unwind data for arm64 can express only 1MB range.
For the large function, we should split unwind data for each fragment of
function. Other than the first fragment (the host region), each fragment
has a phantom prolog starting with "end_c(0xe5)".
I confirmed that this implementation aligns with window's unwinder, and
tested with COMPlus_JitSplitFunctionSize=32 for a few test cases which
split both main and funclets.
Diffstat (limited to 'src/jit/unwind.h')
-rw-r--r-- | src/jit/unwind.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/jit/unwind.h b/src/jit/unwind.h index 68a06fc15c..0327e97c24 100644 --- a/src/jit/unwind.h +++ b/src/jit/unwind.h @@ -30,6 +30,7 @@ const unsigned MAX_EPILOG_SIZE_BYTES = 40; const unsigned MAX_PROLOG_SIZE_BYTES = 100; const unsigned MAX_EPILOG_SIZE_BYTES = 100; #define UWC_END 0xE4 // "end" unwind code +#define UWC_END_C 0xE5 // "end_c" unwind code #define UW_MAX_FRAGMENT_SIZE_BYTES (1U << 20) #define UW_MAX_CODE_WORDS_COUNT 31 #define UW_MAX_EPILOG_START_INDEX 0x3FFU |