summaryrefslogtreecommitdiff
path: root/src/vm/precode.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/vm/precode.cpp')
-rw-r--r--src/vm/precode.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/vm/precode.cpp b/src/vm/precode.cpp
index 9707b2756b..1daf6e32b8 100644
--- a/src/vm/precode.cpp
+++ b/src/vm/precode.cpp
@@ -525,6 +525,16 @@ TADDR Precode::AllocateTemporaryEntryPoints(MethodDescChunk * pChunk,
// Note that these are just best guesses to save memory. If we guessed wrong,
// we will allocate a new exact type of precode in GetOrCreatePrecode.
BOOL fForcedPrecode = pFirstMD->RequiresStableEntryPoint(count > 1);
+
+#ifdef _TARGET_ARM_
+ if (pFirstMD->RequiresMethodDescCallingConvention(count > 1)
+ || count >= MethodDescChunk::GetCompactEntryPointMaxCount ())
+ {
+ // We do not pass method desc on scratch register
+ fForcedPrecode = TRUE;
+ }
+#endif // _TARGET_ARM_
+
if (!fForcedPrecode && (totalSize > MethodDescChunk::SizeOfCompactEntryPoints(count)))
return NULL;
#endif