diff options
author | noahfalk <noahfalk@microsoft.com> | 2017-02-13 14:41:20 -0800 |
---|---|---|
committer | noahfalk <noahfalk@microsoft.com> | 2017-02-13 14:41:20 -0800 |
commit | ac40eab10f2f65a0fe9c88b762da1719d5c3839c (patch) | |
tree | 200f774dd04fb3bf6d318a44d9edc1d9a9623244 /src/vm/proftoeeinterfaceimpl.cpp | |
parent | 645f0ad659dda3e356330c36e5c4702040acfb32 (diff) | |
download | coreclr-ac40eab10f2f65a0fe9c88b762da1719d5c3839c.tar.gz coreclr-ac40eab10f2f65a0fe9c88b762da1719d5c3839c.tar.bz2 coreclr-ac40eab10f2f65a0fe9c88b762da1719d5c3839c.zip |
Rejit support for R2R images
Two changes:
a) R2R code wasn't being reported to the Rejit Manager when it was used, this is a simple fix in prestub.cpp. This makes the ReJit API work.
b) The bulk of the changes handle adding support for an inlining table to R2R so that ICorProfilerInfo6::EnumNgenMethodsInliningThisMethod can supply that information to profilers.
This was only tested on Windows thus far, but there is no apparent reason this change would be OS specific.
Diffstat (limited to 'src/vm/proftoeeinterfaceimpl.cpp')
-rw-r--r-- | src/vm/proftoeeinterfaceimpl.cpp | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/src/vm/proftoeeinterfaceimpl.cpp b/src/vm/proftoeeinterfaceimpl.cpp index 18702d7b60..b7a0eb75e6 100644 --- a/src/vm/proftoeeinterfaceimpl.cpp +++ b/src/vm/proftoeeinterfaceimpl.cpp @@ -9397,8 +9397,7 @@ HRESULT ProfToEEInterfaceImpl::EnumNgenModuleMethodsInliningThisMethod( return CORPROF_E_DATAINCOMPLETE; } - PersistentInlineTrackingMap *inliningMap = inlinersModule->GetNgenInlineTrackingMap(); - if (inliningMap == NULL) + if (!inlinersModule->HasInlineTrackingMap()) { return CORPROF_E_DATAINCOMPLETE; } @@ -9411,14 +9410,14 @@ HRESULT ProfToEEInterfaceImpl::EnumNgenModuleMethodsInliningThisMethod( EX_TRY { // Trying to use static buffer - COUNT_T methodsAvailable = inliningMap->GetInliners(inlineeOwnerModule, inlineeMethodId, staticBufferSize, staticBuffer, incompleteData); + COUNT_T methodsAvailable = inlinersModule->GetInliners(inlineeOwnerModule, inlineeMethodId, staticBufferSize, staticBuffer, incompleteData); // If static buffer is not enough, allocate an array. if (methodsAvailable > staticBufferSize) { DWORD dynamicBufferSize = methodsAvailable; dynamicBuffer = methodsBuffer = new MethodInModule[dynamicBufferSize]; - methodsAvailable = inliningMap->GetInliners(inlineeOwnerModule, inlineeMethodId, dynamicBufferSize, dynamicBuffer, incompleteData); + methodsAvailable = inlinersModule->GetInliners(inlineeOwnerModule, inlineeMethodId, dynamicBufferSize, dynamicBuffer, incompleteData); if (methodsAvailable > dynamicBufferSize) { _ASSERTE(!"Ngen image inlining info changed, this shouldn't be possible."); |