diff options
author | David Wrighton <davidwr@microsoft.com> | 2019-06-07 11:38:49 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-07 11:38:49 -0700 |
commit | b614f4f5529296cac834e54f2fa4bc540a61a04d (patch) | |
tree | 9ed3c8a7e298516bcb436bf68252b959f524a762 /src/ToolBox | |
parent | b51993933c5f2f29b20d229cdb32bbcb41e76dd6 (diff) | |
download | coreclr-b614f4f5529296cac834e54f2fa4bc540a61a04d.tar.gz coreclr-b614f4f5529296cac834e54f2fa4bc540a61a04d.tar.bz2 coreclr-b614f4f5529296cac834e54f2fa4bc540a61a04d.zip |
Reduce indirect function calls (#24980)
* Reduce indirect dispatch in hot paths in metadata
* Remove allocation indirections in utilcode for coreclr
- we no longer have a multi-dll distribution of code that needs to share heaps
* Remove unused code in GetCLRFunction
* Remove virtual dispatch around impl/decl methodtable access in MethodData
Diffstat (limited to 'src/ToolBox')
5 files changed, 0 insertions, 126 deletions
diff --git a/src/ToolBox/superpmi/superpmi-shared/coreclrcommoncallbacks.h b/src/ToolBox/superpmi/superpmi-shared/coreclrcommoncallbacks.h index 98c44c5dec..674268d52a 100644 --- a/src/ToolBox/superpmi/superpmi-shared/coreclrcommoncallbacks.h +++ b/src/ToolBox/superpmi/superpmi-shared/coreclrcommoncallbacks.h @@ -10,11 +10,6 @@ IExecutionEngine* STDMETHODCALLTYPE IEE_t(); HRESULT STDMETHODCALLTYPE GetCORSystemDirectory(LPWSTR pbuffer, DWORD cchBuffer, DWORD* pdwlength); -LPVOID STDMETHODCALLTYPE EEHeapAllocInProcessHeap(DWORD dwFlags, SIZE_T dwBytes); -BOOL STDMETHODCALLTYPE EEHeapFreeInProcessHeap(DWORD dwFlags, LPVOID lpMem); void* STDMETHODCALLTYPE GetCLRFunction(LPCSTR functionName); -typedef LPVOID(STDMETHODCALLTYPE* pfnEEHeapAllocInProcessHeap)(DWORD dwFlags, SIZE_T dwBytes); -typedef BOOL(STDMETHODCALLTYPE* pfnEEHeapFreeInProcessHeap)(DWORD dwFlags, LPVOID lpMem); - #endif diff --git a/src/ToolBox/superpmi/superpmi-shim-collector/coreclrcallbacks.cpp b/src/ToolBox/superpmi/superpmi-shim-collector/coreclrcallbacks.cpp index f0bc271311..759e6717d4 100644 --- a/src/ToolBox/superpmi/superpmi-shim-collector/coreclrcallbacks.cpp +++ b/src/ToolBox/superpmi/superpmi-shim-collector/coreclrcallbacks.cpp @@ -8,8 +8,6 @@ #include "iexecutionengine.h" CoreClrCallbacks* original_CoreClrCallbacks = nullptr; -pfnEEHeapAllocInProcessHeap original_EEHeapAllocInProcessHeap = nullptr; -pfnEEHeapFreeInProcessHeap original_EEHeapFreeInProcessHeap = nullptr; IExecutionEngine* STDMETHODCALLTYPE IEE_t() { @@ -18,41 +16,7 @@ IExecutionEngine* STDMETHODCALLTYPE IEE_t() return iee; } -/*#pragma warning( suppress :4996 ) //deprecated -HRESULT STDMETHODCALLTYPE GetCORSystemDirectory(LPWSTR pbuffer, DWORD cchBuffer, DWORD* pdwlength) -{ - DebugBreakorAV(131); - return 0; -} -*/ - -LPVOID STDMETHODCALLTYPE EEHeapAllocInProcessHeap(DWORD dwFlags, SIZE_T dwBytes) -{ - if (original_EEHeapAllocInProcessHeap == nullptr) - __debugbreak(); - return original_EEHeapAllocInProcessHeap(dwFlags, dwBytes); -} - -BOOL STDMETHODCALLTYPE EEHeapFreeInProcessHeap(DWORD dwFlags, LPVOID lpMem) -{ - if (original_EEHeapFreeInProcessHeap == nullptr) - __debugbreak(); - return original_EEHeapFreeInProcessHeap(dwFlags, lpMem); -} - void* STDMETHODCALLTYPE GetCLRFunction(LPCSTR functionName) { - if (strcmp(functionName, "EEHeapAllocInProcessHeap") == 0) - { - original_EEHeapAllocInProcessHeap = - (pfnEEHeapAllocInProcessHeap)original_CoreClrCallbacks->m_pfnGetCLRFunction("EEHeapAllocInProcessHeap"); - return (void*)EEHeapAllocInProcessHeap; - } - if (strcmp(functionName, "EEHeapFreeInProcessHeap") == 0) - { - original_EEHeapFreeInProcessHeap = - (pfnEEHeapFreeInProcessHeap)original_CoreClrCallbacks->m_pfnGetCLRFunction("EEHeapFreeInProcessHeap"); - return (void*)EEHeapFreeInProcessHeap; - } return original_CoreClrCallbacks->m_pfnGetCLRFunction(functionName); } diff --git a/src/ToolBox/superpmi/superpmi-shim-counter/coreclrcallbacks.cpp b/src/ToolBox/superpmi/superpmi-shim-counter/coreclrcallbacks.cpp index f0bc271311..c5ef40227c 100644 --- a/src/ToolBox/superpmi/superpmi-shim-counter/coreclrcallbacks.cpp +++ b/src/ToolBox/superpmi/superpmi-shim-counter/coreclrcallbacks.cpp @@ -8,8 +8,6 @@ #include "iexecutionengine.h" CoreClrCallbacks* original_CoreClrCallbacks = nullptr; -pfnEEHeapAllocInProcessHeap original_EEHeapAllocInProcessHeap = nullptr; -pfnEEHeapFreeInProcessHeap original_EEHeapFreeInProcessHeap = nullptr; IExecutionEngine* STDMETHODCALLTYPE IEE_t() { @@ -26,33 +24,7 @@ HRESULT STDMETHODCALLTYPE GetCORSystemDirectory(LPWSTR pbuffer, DWORD cchBuffer, } */ -LPVOID STDMETHODCALLTYPE EEHeapAllocInProcessHeap(DWORD dwFlags, SIZE_T dwBytes) -{ - if (original_EEHeapAllocInProcessHeap == nullptr) - __debugbreak(); - return original_EEHeapAllocInProcessHeap(dwFlags, dwBytes); -} - -BOOL STDMETHODCALLTYPE EEHeapFreeInProcessHeap(DWORD dwFlags, LPVOID lpMem) -{ - if (original_EEHeapFreeInProcessHeap == nullptr) - __debugbreak(); - return original_EEHeapFreeInProcessHeap(dwFlags, lpMem); -} - void* STDMETHODCALLTYPE GetCLRFunction(LPCSTR functionName) { - if (strcmp(functionName, "EEHeapAllocInProcessHeap") == 0) - { - original_EEHeapAllocInProcessHeap = - (pfnEEHeapAllocInProcessHeap)original_CoreClrCallbacks->m_pfnGetCLRFunction("EEHeapAllocInProcessHeap"); - return (void*)EEHeapAllocInProcessHeap; - } - if (strcmp(functionName, "EEHeapFreeInProcessHeap") == 0) - { - original_EEHeapFreeInProcessHeap = - (pfnEEHeapFreeInProcessHeap)original_CoreClrCallbacks->m_pfnGetCLRFunction("EEHeapFreeInProcessHeap"); - return (void*)EEHeapFreeInProcessHeap; - } return original_CoreClrCallbacks->m_pfnGetCLRFunction(functionName); } diff --git a/src/ToolBox/superpmi/superpmi-shim-simple/coreclrcallbacks.cpp b/src/ToolBox/superpmi/superpmi-shim-simple/coreclrcallbacks.cpp index 149fe069af..759e6717d4 100644 --- a/src/ToolBox/superpmi/superpmi-shim-simple/coreclrcallbacks.cpp +++ b/src/ToolBox/superpmi/superpmi-shim-simple/coreclrcallbacks.cpp @@ -8,8 +8,6 @@ #include "iexecutionengine.h" CoreClrCallbacks* original_CoreClrCallbacks = nullptr; -pfnEEHeapAllocInProcessHeap original_EEHeapAllocInProcessHeap = nullptr; -pfnEEHeapFreeInProcessHeap original_EEHeapFreeInProcessHeap = nullptr; IExecutionEngine* STDMETHODCALLTYPE IEE_t() { @@ -18,37 +16,7 @@ IExecutionEngine* STDMETHODCALLTYPE IEE_t() return iee; } -/*#pragma warning( suppress :4996 ) //deprecated -HRESULT STDMETHODCALLTYPE GetCORSystemDirectory(LPWSTR pbuffer, DWORD cchBuffer, DWORD* pdwlength) -{ - DebugBreakorAV(131); - return 0; -} -*/ - -LPVOID STDMETHODCALLTYPE EEHeapAllocInProcessHeap(DWORD dwFlags, SIZE_T dwBytes) -{ - return original_EEHeapAllocInProcessHeap(dwFlags, dwBytes); -} - -BOOL STDMETHODCALLTYPE EEHeapFreeInProcessHeap(DWORD dwFlags, LPVOID lpMem) -{ - return original_EEHeapFreeInProcessHeap(dwFlags, lpMem); -} - void* STDMETHODCALLTYPE GetCLRFunction(LPCSTR functionName) { - if (strcmp(functionName, "EEHeapAllocInProcessHeap") == 0) - { - original_EEHeapAllocInProcessHeap = - (pfnEEHeapAllocInProcessHeap)original_CoreClrCallbacks->m_pfnGetCLRFunction("EEHeapAllocInProcessHeap"); - return (void*)EEHeapAllocInProcessHeap; - } - if (strcmp(functionName, "EEHeapFreeInProcessHeap") == 0) - { - original_EEHeapFreeInProcessHeap = - (pfnEEHeapFreeInProcessHeap)original_CoreClrCallbacks->m_pfnGetCLRFunction("EEHeapFreeInProcessHeap"); - return (void*)EEHeapFreeInProcessHeap; - } return original_CoreClrCallbacks->m_pfnGetCLRFunction(functionName); } diff --git a/src/ToolBox/superpmi/superpmi/coreclrcallbacks.cpp b/src/ToolBox/superpmi/superpmi/coreclrcallbacks.cpp index d96e2be7df..15af7c8555 100644 --- a/src/ToolBox/superpmi/superpmi/coreclrcallbacks.cpp +++ b/src/ToolBox/superpmi/superpmi/coreclrcallbacks.cpp @@ -24,33 +24,8 @@ HRESULT STDMETHODCALLTYPE GetCORSystemDirectory(LPWSTR pbuffer, DWORD cchBuffer, HANDLE ourHeap = nullptr; -LPVOID STDMETHODCALLTYPE EEHeapAllocInProcessHeap(DWORD dwFlags, SIZE_T dwBytes) -{ - if (ourHeap == nullptr) - ourHeap = HeapCreate(0, 4096, 0); - if (ourHeap == nullptr) - { - LogError("HeapCreate Failed"); - __debugbreak(); - return nullptr; - } - LPVOID result = HeapAlloc(ourHeap, dwFlags, dwBytes); - // LogDebug("EEHeapAllocInProcessHeap %p %u %u", result, dwFlags, dwBytes); - return result; -} - -BOOL STDMETHODCALLTYPE EEHeapFreeInProcessHeap(DWORD dwFlags, LPVOID lpMem) -{ - // return true; - return HeapFree(ourHeap, dwFlags, lpMem); -} - void* STDMETHODCALLTYPE GetCLRFunction(LPCSTR functionName) { - if (strcmp(functionName, "EEHeapAllocInProcessHeap") == 0) - return (void*)EEHeapAllocInProcessHeap; - if (strcmp(functionName, "EEHeapFreeInProcessHeap") == 0) - return (void*)EEHeapFreeInProcessHeap; DebugBreakorAV(132); return nullptr; } |