Change dotnet/coreclr#23715 changed the localloc stack probe loop to load a
negative constant instead of zero to start the probing loop.
This increased the size of the probing loop, and hence the
size of the maximum prolog, by 4 bytes. Bump the assert on
the maximum size to match.
Note that as the comment says, the maximum size there is not
actually a maximum (it was originally), it is just to alert
us when the maximum generated prolog size has gone up.
Fixes dotnet/coreclr#23920
Commit migrated from https://github.com/dotnet/coreclr/commit/
f98564c3382bedf53b65689f5ea1c53942cf6729
// Generate:
//
- // mov rOffset, -pageSize
+ // mov rOffset, -pageSize // On arm, this turns out to be "movw r1, 0xf000; sxth r1, r1".
+ // // We could save 4 bytes in the prolog by using "movs r1, 0" at the
+ // // runtime expense of running a useless first loop iteration.
// mov rLimit, -frameSize
// loop:
// ldr rTemp, [sp + rOffset] // rTemp = wzr on ARM64
// You can increase this "max" number if necessary.
#if defined(_TARGET_ARM_)
-const unsigned MAX_PROLOG_SIZE_BYTES = 40;
-const unsigned MAX_EPILOG_SIZE_BYTES = 40;
+const unsigned MAX_PROLOG_SIZE_BYTES = 44;
+const unsigned MAX_EPILOG_SIZE_BYTES = 44;
#define UWC_END 0xFF // "end" unwind code
#define UW_MAX_FRAGMENT_SIZE_BYTES (1U << 19)
#define UW_MAX_CODE_WORDS_COUNT 15 // Max number that can be encoded in the "Code Words" field of the .pdata record