summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorAndy Ayers <andya@microsoft.com>2016-10-21 18:46:50 -0700
committerAndy Ayers <andya@microsoft.com>2016-11-09 15:12:44 -0800
commitc60e68e51a8a09886df5e085986dae76cd74f974 (patch)
treeb186745ffea14eeb4603ffaa1f8e4ef29742d23a /tests
parente76da565c106016d604b95f3bb7eadd24ceaf18a (diff)
downloadcoreclr-c60e68e51a8a09886df5e085986dae76cd74f974.tar.gz
coreclr-c60e68e51a8a09886df5e085986dae76cd74f974.tar.bz2
coreclr-c60e68e51a8a09886df5e085986dae76cd74f974.zip
Inliner: support inlining of methods with pinned locals
The inliner now can inline a subset of methods with pinned locals -- namely those where the language compiler (eg CSC) can determine that a try/finally is not necessary to ensure unpinning, and where the jit likewise an determines that a try/finally is likewise not needed in the root method. Generally speaking this allows inlining in cases where the inline method is fairly simple and does not any contain exception handling, and the call site is not within a try region. When inlining methods that have pinned locals and also return a value, the jit ensures that the return value is spilled to a temp so that the unpins can be placed just after the inlined method body and won't alter the return value. Mark FixedAddressValueType as GCStressIncompatible since the "unfixed" class static may get re-allocated at the same address. This seems to happen even without these changes but happens much more frequently with them. Closes #7774.
Diffstat (limited to 'tests')
-rw-r--r--tests/src/baseservices/compilerservices/FixedAddressValueType/FixedAddressValueType.csproj1
1 files changed, 1 insertions, 0 deletions
diff --git a/tests/src/baseservices/compilerservices/FixedAddressValueType/FixedAddressValueType.csproj b/tests/src/baseservices/compilerservices/FixedAddressValueType/FixedAddressValueType.csproj
index 72ba0b9741..19a779194f 100644
--- a/tests/src/baseservices/compilerservices/FixedAddressValueType/FixedAddressValueType.csproj
+++ b/tests/src/baseservices/compilerservices/FixedAddressValueType/FixedAddressValueType.csproj
@@ -16,6 +16,7 @@
<ReferenceLocalMscorlib>true</ReferenceLocalMscorlib>
<CLRTestKind>BuildAndRun</CLRTestKind>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+ <GCStressIncompatible>true</GCStressIncompatible>
</PropertyGroup>
<!-- Default configurations to help VS understand the configurations -->
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">