summaryrefslogtreecommitdiff
path: root/src/vm/prestub.cpp
diff options
context:
space:
mode:
authorDavid Wrighton <davidwr@microsoft.com>2019-02-14 17:07:14 -0800
committerGitHub <noreply@github.com>2019-02-14 17:07:14 -0800
commit423d2a3b91feea18ab361da04d5cc24bdff157d0 (patch)
treee59d54a5c48322a09ef1a4c5325378c9f60171dd /src/vm/prestub.cpp
parent89e78f42ba11beaa81635a75cf593a3713dba176 (diff)
downloadcoreclr-423d2a3b91feea18ab361da04d5cc24bdff157d0.tar.gz
coreclr-423d2a3b91feea18ab361da04d5cc24bdff157d0.tar.bz2
coreclr-423d2a3b91feea18ab361da04d5cc24bdff157d0.zip
Replace multi-loaderallocator hash implementation in MethodDescBackpatchInfo (#22285)
* GCHeapHash - Hashtable implementation for runtime use - Implementation written in C++ - Data storage in managed heap memory - Based on SHash design, but using managed memory CrossLoaderAllocatorHash - Hash for c++ Pointer to C++ pointer where the lifetimes are controlled by different loader allocators - Support for add/remove/visit all entries of 1 key/visit all entries/ remove all entries of 1 key - Supports holding data which is unmanaged, but data items themselves can be of any size (key/value are templated types) * Swap MethodDescBackpatchInfo to use the CrossLoaderAllocatorHash * The MethodDescBackpatchCrst needs to be around an allocation - Adjust the Crst so that it can safely be used around code which allocates - Required moving its use out from within the EESuspend logic used in rejit
Diffstat (limited to 'src/vm/prestub.cpp')
-rw-r--r--src/vm/prestub.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/vm/prestub.cpp b/src/vm/prestub.cpp
index d04a5d0a54..a08a2d1a10 100644
--- a/src/vm/prestub.cpp
+++ b/src/vm/prestub.cpp
@@ -1964,6 +1964,8 @@ PCODE MethodDesc::DoPrestub(MethodTable *pDispatchingMT)
return pCode;
}
+ _ASSERTE(!MayHaveEntryPointSlotsToBackpatch()); // This path doesn't lock the MethodDescBackpatchTracker as it should only
+ // happen for jump-stampable or non-versionable methods
SetCodeEntryPoint(pCode);
}
else