diff options
author | David Wrighton <davidwr@microsoft.com> | 2019-02-14 17:07:14 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-02-14 17:07:14 -0800 |
commit | 423d2a3b91feea18ab361da04d5cc24bdff157d0 (patch) | |
tree | e59d54a5c48322a09ef1a4c5325378c9f60171dd /src/vm/prestub.cpp | |
parent | 89e78f42ba11beaa81635a75cf593a3713dba176 (diff) | |
download | coreclr-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.cpp | 2 |
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 |