From c4c04ea45cda3194cdf2189d757b96602ea344ee Mon Sep 17 00:00:00 2001 From: Gleb Balykov Date: Fri, 23 Jun 2017 15:48:48 +0300 Subject: Remove relocations for MethodTable's vtable-1st-level-indirection --- src/vm/jitinterface.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/vm/jitinterface.h') diff --git a/src/vm/jitinterface.h b/src/vm/jitinterface.h index e34b859c3f..cbb24e0913 100644 --- a/src/vm/jitinterface.h +++ b/src/vm/jitinterface.h @@ -727,8 +727,8 @@ public: void getMethodVTableOffset ( CORINFO_METHOD_HANDLE methodHnd, unsigned * pOffsetOfIndirection, - unsigned * pOffsetAfterIndirection - ); + unsigned * pOffsetAfterIndirection, + unsigned * isRelative); CORINFO_METHOD_HANDLE resolveVirtualMethod( CORINFO_METHOD_HANDLE virtualMethod, -- cgit v1.2.3 From fd1998903d5eef356f27c54e5a9d490711cbc9e7 Mon Sep 17 00:00:00 2001 From: noahfalk Date: Mon, 24 Jul 2017 17:38:30 -0700 Subject: Add the runtime code versioning feature This makes tiered compilation work properly with profiler ReJIT, and positions the runtime to integrate other versioning related features together in the future. See the newly added code-versioning design-doc in this commit for more information. Breaking changes for profilers: See code-versioning-profiler-breaking-changes.md for more details. --- src/vm/jitinterface.h | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'src/vm/jitinterface.h') diff --git a/src/vm/jitinterface.h b/src/vm/jitinterface.h index e34b859c3f..8df6b72ea4 100644 --- a/src/vm/jitinterface.h +++ b/src/vm/jitinterface.h @@ -1052,16 +1052,17 @@ public: DWORD getExpectedTargetArchitecture(); - CEEInfo(MethodDesc * fd = NULL, bool fVerifyOnly = false) : + CEEInfo(MethodDesc * fd = NULL, bool fVerifyOnly = false, bool fAllowInlining = true) : m_pOverride(NULL), m_pMethodBeingCompiled(fd), m_fVerifyOnly(fVerifyOnly), m_pThread(GetThread()), m_hMethodForSecurity_Key(NULL), - m_pMethodForSecurity_Value(NULL) + m_pMethodForSecurity_Value(NULL), #if defined(FEATURE_GDBJIT) - , m_pCalledMethods(NULL) + m_pCalledMethods(NULL), #endif + m_allowInlining(fAllowInlining) { LIMITED_METHOD_CONTRACT; } @@ -1154,6 +1155,8 @@ protected: CalledMethod * m_pCalledMethods; #endif + bool m_allowInlining; + // Tracking of module activation dependencies. We have two flavors: // - Fast one that gathers generic arguments from EE handles, but does not work inside generic context. // - Slow one that operates on typespec and methodspecs from metadata. @@ -1330,8 +1333,8 @@ public: #endif CEEJitInfo(MethodDesc* fd, COR_ILMETHOD_DECODER* header, - EEJitManager* jm, bool fVerifyOnly) - : CEEInfo(fd, fVerifyOnly), + EEJitManager* jm, bool fVerifyOnly, bool allowInlining = true) + : CEEInfo(fd, fVerifyOnly, allowInlining), m_jitManager(jm), m_CodeHeader(NULL), m_ILHeader(header), @@ -1464,7 +1467,6 @@ protected : void* m_pvGphProfilerHandle; } m_gphCache; - }; #endif // CROSSGEN_COMPILE -- cgit v1.2.3 From 76a572a65026f277c5c42b25fcb01cce4625b10f Mon Sep 17 00:00:00 2001 From: Gleb Balykov Date: Mon, 7 Aug 2017 13:33:58 +0300 Subject: Review fixes --- src/vm/jitinterface.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/vm/jitinterface.h') diff --git a/src/vm/jitinterface.h b/src/vm/jitinterface.h index cbb24e0913..0e9075bfef 100644 --- a/src/vm/jitinterface.h +++ b/src/vm/jitinterface.h @@ -728,7 +728,7 @@ public: CORINFO_METHOD_HANDLE methodHnd, unsigned * pOffsetOfIndirection, unsigned * pOffsetAfterIndirection, - unsigned * isRelative); + bool * isRelative); CORINFO_METHOD_HANDLE resolveVirtualMethod( CORINFO_METHOD_HANDLE virtualMethod, -- cgit v1.2.3 From b7cce5a59f7c6bd5a33b88f2af252693bbbd7373 Mon Sep 17 00:00:00 2001 From: Andy Ayers Date: Thu, 7 Sep 2017 14:28:07 -0700 Subject: New jit intrinsic support (#13815) Support for new-style intrinsics where corelib methods can have both IL implementations and optional jit-supplied implementations. Mark such methods with the [Intrinsic] attribute, then recognize the intrinsic methods by name in the jit. Jit currently has a placeholder for the Enum.HasFlag method. --- src/vm/jitinterface.h | 1 + 1 file changed, 1 insertion(+) (limited to 'src/vm/jitinterface.h') diff --git a/src/vm/jitinterface.h b/src/vm/jitinterface.h index 141c812280..8ba65c3964 100644 --- a/src/vm/jitinterface.h +++ b/src/vm/jitinterface.h @@ -649,6 +649,7 @@ public: // ICorMethodInfo stuff const char* getMethodName (CORINFO_METHOD_HANDLE ftnHnd, const char** scopeName); + const char* getMethodNameFromMetadata (CORINFO_METHOD_HANDLE ftnHnd, const char** className, const char** namespaceName); unsigned getMethodHash (CORINFO_METHOD_HANDLE ftnHnd); DWORD getMethodAttribs (CORINFO_METHOD_HANDLE ftnHnd); -- cgit v1.2.3