summaryrefslogtreecommitdiff
path: root/src/jit/unwind.h
diff options
context:
space:
mode:
authorKyungwoo Lee <kyulee@microsoft.com>2016-07-20 08:50:22 -0700
committerKyungwoo Lee <kyulee@microsoft.com>2016-07-20 08:50:22 -0700
commitb37e6fc8f5cd72eaae9258df2158bb85e5ff43dc (patch)
tree86823d60dc4b835e1210a2dba5ec7116ef5601a5 /src/jit/unwind.h
parente9774389f13862104605a092921d4e3872524096 (diff)
downloadcoreclr-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.h1
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