summaryrefslogtreecommitdiff
path: root/src/ToolBox
diff options
context:
space:
mode:
authorDavid Wrighton <davidwr@microsoft.com>2019-06-07 11:38:49 -0700
committerGitHub <noreply@github.com>2019-06-07 11:38:49 -0700
commitb614f4f5529296cac834e54f2fa4bc540a61a04d (patch)
tree9ed3c8a7e298516bcb436bf68252b959f524a762 /src/ToolBox
parentb51993933c5f2f29b20d229cdb32bbcb41e76dd6 (diff)
downloadcoreclr-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')
-rw-r--r--src/ToolBox/superpmi/superpmi-shared/coreclrcommoncallbacks.h5
-rw-r--r--src/ToolBox/superpmi/superpmi-shim-collector/coreclrcallbacks.cpp36
-rw-r--r--src/ToolBox/superpmi/superpmi-shim-counter/coreclrcallbacks.cpp28
-rw-r--r--src/ToolBox/superpmi/superpmi-shim-simple/coreclrcallbacks.cpp32
-rw-r--r--src/ToolBox/superpmi/superpmi/coreclrcallbacks.cpp25
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;
}