`isValidToken`'s contract was too conservative: it was needlessly marked
`THROWS`, `GC_TRIGGERS`, and `MODE_PREEMPTIVE`. Its contract and those
of its callers have been tightened to `NOTHROW`, `GC_NOTRIGGER`, and
`MODE_ANY`.
Commit migrated from https://github.com/dotnet/coreclr/commit/
8686653b0266b82a5ffb6d7aca4116d72c88df86
{
CONTRACTL {
SO_TOLERANT;
- THROWS;
- GC_TRIGGERS;
- MODE_PREEMPTIVE;
+ NOTHROW;
+ GC_NOTRIGGER;
+ MODE_ANY;
} CONTRACTL_END;
BOOL result = FALSE;
- JIT_TO_EE_TRANSITION();
+ JIT_TO_EE_TRANSITION_LEAF();
if (IsDynamicScope(module))
{
result = ((Module *)module)->GetMDImport()->IsValidToken(metaTOK);
}
- EE_TO_JIT_TRANSITION();
+ EE_TO_JIT_TRANSITION_LEAF();
return result;
}
bool isValidTokenForTryResolveToken(CEEInfo* info, CORINFO_RESOLVED_TOKEN* resolvedToken)
{
- LIMITED_METHOD_CONTRACT;
+ CONTRACTL {
+ NOTHROW;
+ GC_NOTRIGGER;
+ SO_TOLERANT;
+ MODE_ANY;
+ } CONTRACTL_END;
if (!info->isValidToken(resolvedToken->tokenScope, resolvedToken->token))
{