diff options
author | Jan Kotas <jkotas@microsoft.com> | 2018-08-11 07:43:16 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-11 07:43:16 -0700 |
commit | af4ec7c89d0192ad14392da04e8c097da8ec9e48 (patch) | |
tree | 0b3018c1c576114d2b5b0f355df6ff48972a6c5d /src/vm/peimage.cpp | |
parent | f551543427176850c84b9e11c7b8d528c3f282a7 (diff) | |
download | coreclr-af4ec7c89d0192ad14392da04e8c097da8ec9e48.tar.gz coreclr-af4ec7c89d0192ad14392da04e8c097da8ec9e48.tar.bz2 coreclr-af4ec7c89d0192ad14392da04e8c097da8ec9e48.zip |
Make RuntimeType sealed and deleted support for introspection only loads (#19427)
- Sealed Runtime makes `is RuntimeType` and similar checks faster. These checks are fairly common in reflection.
- Delete support for introspection only loads from the runtime. We do not plan to use in .NET Core. The support for introspection loads inherited from RuntimeType and thus it is incompatible with sealed RuntimeType.
Diffstat (limited to 'src/vm/peimage.cpp')
-rw-r--r-- | src/vm/peimage.cpp | 34 |
1 files changed, 6 insertions, 28 deletions
diff --git a/src/vm/peimage.cpp b/src/vm/peimage.cpp index 83989f0e4d..766d40bdc4 100644 --- a/src/vm/peimage.cpp +++ b/src/vm/peimage.cpp @@ -808,8 +808,6 @@ void PEImage::EnumMemoryRegions(CLRDataEnumMemoryFlags flags) m_pLayouts[IMAGE_MAPPED]->EnumMemoryRegions(flags); if (m_pLayouts[IMAGE_LOADED].IsValid() && m_pLayouts[IMAGE_LOADED]!=NULL) m_pLayouts[IMAGE_LOADED]->EnumMemoryRegions(flags); - if (m_pLayouts[IMAGE_LOADED_FOR_INTROSPECTION].IsValid() && m_pLayouts[IMAGE_LOADED_FOR_INTROSPECTION]!=NULL) - m_pLayouts[IMAGE_LOADED_FOR_INTROSPECTION]->EnumMemoryRegions(flags); } #endif // #ifdef DACCESS_COMPILE @@ -1179,19 +1177,6 @@ void PEImage::LoadFromMapped() SetLayout(IMAGE_LOADED,pLayout.Extract()); } -void PEImage::LoadForIntrospection() -{ - STANDARD_VM_CONTRACT; - - if (HasLoadedIntrospectionLayout()) - return; - - PEImageLayoutHolder pLayout(GetLayout(PEImageLayout::LAYOUT_ANY,LAYOUT_CREATEIFNEEDED)); - SimpleWriteLockHolder lock(m_pLayoutLock); - if(m_pLayouts[IMAGE_LOADED_FOR_INTROSPECTION]==NULL) - SetLayout(IMAGE_LOADED_FOR_INTROSPECTION,pLayout.Extract()); -} - void PEImage::LoadNoFile() { CONTRACTL @@ -1212,32 +1197,25 @@ void PEImage::LoadNoFile() } -void PEImage::LoadNoMetaData(BOOL bIntrospection) +void PEImage::LoadNoMetaData() { STANDARD_VM_CONTRACT; - if (bIntrospection) - { - if (HasLoadedIntrospectionLayout()) - return; - } - else - if (HasLoadedLayout()) - return; + if (HasLoadedLayout()) + return; SimpleWriteLockHolder lock(m_pLayoutLock); - int layoutKind=bIntrospection?IMAGE_LOADED_FOR_INTROSPECTION:IMAGE_LOADED; - if (m_pLayouts[layoutKind]!=NULL) + if (m_pLayouts[IMAGE_LOADED]!=NULL) return; if (m_pLayouts[IMAGE_FLAT]!=NULL) { m_pLayouts[IMAGE_FLAT]->AddRef(); - SetLayout(layoutKind,m_pLayouts[IMAGE_FLAT]); + SetLayout(IMAGE_LOADED,m_pLayouts[IMAGE_FLAT]); } else { _ASSERTE(!m_path.IsEmpty()); - SetLayout(layoutKind,PEImageLayout::LoadFlat(GetFileHandle(),this)); + SetLayout(IMAGE_LOADED,PEImageLayout::LoadFlat(GetFileHandle(),this)); } } |