diff options
author | Pat Gavlin <pagavlin@microsoft.com> | 2016-05-02 16:40:26 -0700 |
---|---|---|
committer | Pat Gavlin <pagavlin@microsoft.com> | 2016-05-03 07:15:42 -0700 |
commit | 8686653b0266b82a5ffb6d7aca4116d72c88df86 (patch) | |
tree | 305e7fb2c8ebaab8aa0fe3692f6a55bf1da48f99 | |
parent | ea040083e57c706c6fe4c34f5a51b5851c249b43 (diff) | |
download | coreclr-8686653b0266b82a5ffb6d7aca4116d72c88df86.tar.gz coreclr-8686653b0266b82a5ffb6d7aca4116d72c88df86.tar.bz2 coreclr-8686653b0266b82a5ffb6d7aca4116d72c88df86.zip |
Fix contracts in `tryResolveToken` et. al.
`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`.
-rw-r--r-- | src/vm/jitinterface.cpp | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/vm/jitinterface.cpp b/src/vm/jitinterface.cpp index 2cf2ab4838..ab7940cc47 100644 --- a/src/vm/jitinterface.cpp +++ b/src/vm/jitinterface.cpp @@ -817,14 +817,14 @@ BOOL CEEInfo::isValidToken ( { 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)) { @@ -837,7 +837,7 @@ BOOL CEEInfo::isValidToken ( result = ((Module *)module)->GetMDImport()->IsValidToken(metaTOK); } - EE_TO_JIT_TRANSITION(); + EE_TO_JIT_TRANSITION_LEAF(); return result; } @@ -1302,7 +1302,12 @@ struct TryResolveTokenFilterParam 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)) { |