diff options
Diffstat (limited to 'src/vm/jitinterface.h')
-rw-r--r-- | src/vm/jitinterface.h | 86 |
1 files changed, 27 insertions, 59 deletions
diff --git a/src/vm/jitinterface.h b/src/vm/jitinterface.h index df9e1d764c..d287248d24 100644 --- a/src/vm/jitinterface.h +++ b/src/vm/jitinterface.h @@ -317,6 +317,7 @@ private: PBYTE m_pWriteWatchTableImmediate; // PREGROW | POSTGROW | SVR | WRITE_WATCH | PBYTE m_pLowerBoundImmediate; // PREGROW | POSTGROW | | WRITE_WATCH | PBYTE m_pCardTableImmediate; // PREGROW | POSTGROW | SVR | WRITE_WATCH | + PBYTE m_pCardBundleTableImmediate; // PREGROW | POSTGROW | SVR | WRITE_WATCH | PBYTE m_pUpperBoundImmediate; // | POSTGROW | | WRITE_WATCH | }; @@ -343,20 +344,23 @@ EXTERN_C FCDECL1_V(INT32, JIT_Dbl2IntOvf, double val); EXTERN_C FCDECL2_VV(float, JIT_FltRem, float dividend, float divisor); EXTERN_C FCDECL2_VV(double, JIT_DblRem, double dividend, double divisor); -#if !defined(_WIN64) && !defined(_TARGET_X86_) +#ifndef BIT64 +#ifdef _TARGET_X86_ +// JIThelp.asm +EXTERN_C void STDCALL JIT_LLsh(); +EXTERN_C void STDCALL JIT_LRsh(); +EXTERN_C void STDCALL JIT_LRsz(); +#else // _TARGET_X86_ EXTERN_C FCDECL2_VV(UINT64, JIT_LLsh, UINT64 num, int shift); EXTERN_C FCDECL2_VV(INT64, JIT_LRsh, INT64 num, int shift); EXTERN_C FCDECL2_VV(UINT64, JIT_LRsz, UINT64 num, int shift); -#endif +#endif // !_TARGET_X86_ +#endif // !BIT64 #ifdef _TARGET_X86_ extern "C" { - void STDCALL JIT_LLsh(); // JIThelp.asm - void STDCALL JIT_LRsh(); // JIThelp.asm - void STDCALL JIT_LRsz(); // JIThelp.asm - void STDCALL JIT_CheckedWriteBarrierEAX(); // JIThelp.asm/JIThelp.s void STDCALL JIT_CheckedWriteBarrierEBX(); // JIThelp.asm/JIThelp.s void STDCALL JIT_CheckedWriteBarrierECX(); // JIThelp.asm/JIThelp.s @@ -378,11 +382,11 @@ extern "C" void STDCALL JIT_WriteBarrierEDI(); // JIThelp.asm/JIThelp.s void STDCALL JIT_WriteBarrierEBP(); // JIThelp.asm/JIThelp.s - void STDCALL JIT_WriteBarrierStart(); - void STDCALL JIT_WriteBarrierLast(); + void STDCALL JIT_WriteBarrierGroup(); + void STDCALL JIT_WriteBarrierGroup_End(); - void STDCALL JIT_PatchedWriteBarrierStart(); - void STDCALL JIT_PatchedWriteBarrierLast(); + void STDCALL JIT_PatchedWriteBarrierGroup(); + void STDCALL JIT_PatchedWriteBarrierGroup_End(); } void ValidateWriteBarrierHelpers(); @@ -413,59 +417,11 @@ extern "C" void STDCALL JIT_ProfilerEnterLeaveTailcallStub(UINT_PTR ProfilerHandle); }; -#ifndef FEATURE_CORECLR -// -// Obfluscators that are hacking into the JIT expect certain methods to exist in certain places of CEEInfo vtable. Add artifical slots -// to the vtable to avoid breaking apps by .NET 4.5 in-place update. -// - -class ICorMethodInfo_Hack -{ -public: - virtual const char* __stdcall ICorMethodInfo_Hack_getMethodName (CORINFO_METHOD_HANDLE ftnHnd, const char** scopeName) = 0; -}; - -class ICorModuleInfo_Hack -{ -public: - virtual void ICorModuleInfo_Hack_dummy() { LIMITED_METHOD_CONTRACT; UNREACHABLE(); }; -}; - -class ICorClassInfo_Hack -{ -public: - virtual void ICorClassInfo_Hack_dummy1() { LIMITED_METHOD_CONTRACT; UNREACHABLE(); }; - virtual void ICorClassInfo_Hack_dummy2() { LIMITED_METHOD_CONTRACT; UNREACHABLE(); }; - virtual void ICorClassInfo_Hack_dummy3() { LIMITED_METHOD_CONTRACT; UNREACHABLE(); }; - virtual void ICorClassInfo_Hack_dummy4() { LIMITED_METHOD_CONTRACT; UNREACHABLE(); }; - virtual void ICorClassInfo_Hack_dummy5() { LIMITED_METHOD_CONTRACT; UNREACHABLE(); }; - virtual void ICorClassInfo_Hack_dummy6() { LIMITED_METHOD_CONTRACT; UNREACHABLE(); }; - virtual void ICorClassInfo_Hack_dummy7() { LIMITED_METHOD_CONTRACT; UNREACHABLE(); }; - virtual void ICorClassInfo_Hack_dummy8() { LIMITED_METHOD_CONTRACT; UNREACHABLE(); }; - virtual void ICorClassInfo_Hack_dummy9() { LIMITED_METHOD_CONTRACT; UNREACHABLE(); }; - virtual void ICorClassInfo_Hack_dummy10() { LIMITED_METHOD_CONTRACT; UNREACHABLE(); }; - virtual void ICorClassInfo_Hack_dummy11() { LIMITED_METHOD_CONTRACT; UNREACHABLE(); }; - virtual void ICorClassInfo_Hack_dummy12() { LIMITED_METHOD_CONTRACT; UNREACHABLE(); }; - virtual void ICorClassInfo_Hack_dummy13() { LIMITED_METHOD_CONTRACT; UNREACHABLE(); }; - virtual void ICorClassInfo_Hack_dummy14() { LIMITED_METHOD_CONTRACT; UNREACHABLE(); }; - - virtual mdMethodDef __stdcall ICorClassInfo_Hack_getMethodDefFromMethod(CORINFO_METHOD_HANDLE hMethod) = 0; -}; - -class ICorStaticInfo_Hack : public virtual ICorMethodInfo_Hack, public virtual ICorModuleInfo_Hack, public virtual ICorClassInfo_Hack -{ - virtual void ICorStaticInfo_Hack_dummy() { LIMITED_METHOD_CONTRACT; UNREACHABLE(); }; -}; - -#endif // FEATURE_CORECLR /*********************************************************************/ /*********************************************************************/ class CEEInfo : public ICorJitInfo -#ifndef FEATURE_CORECLR - , public virtual ICorStaticInfo_Hack -#endif { friend class CEEDynamicCodeInfo; @@ -564,7 +520,7 @@ public: void getReadyToRunDelegateCtorHelper( CORINFO_RESOLVED_TOKEN * pTargetMethod, CORINFO_CLASS_HANDLE delegateType, - CORINFO_CONST_LOOKUP * pLookup + CORINFO_LOOKUP * pLookup ); CorInfoInitClassResult initClass( @@ -773,6 +729,18 @@ public: unsigned * pOffsetAfterIndirection ); + CORINFO_METHOD_HANDLE resolveVirtualMethod( + CORINFO_METHOD_HANDLE virtualMethod, + CORINFO_CLASS_HANDLE implementingClass, + CORINFO_CONTEXT_HANDLE ownerType + ); + + CORINFO_METHOD_HANDLE resolveVirtualMethodHelper( + CORINFO_METHOD_HANDLE virtualMethod, + CORINFO_CLASS_HANDLE implementingClass, + CORINFO_CONTEXT_HANDLE ownerType + ); + CorInfoIntrinsics getIntrinsicID(CORINFO_METHOD_HANDLE method, bool * pMustExpand = NULL); |