SETALIAS CTPMethodTable__s_pThunkTable, ?s_pThunkTable@CTPMethodTable@@0PAVMethodTable@@A
SETALIAS g_pObjectClass, ?g_pObjectClass@@3PAVMethodTable@@A
- IMPORT GetThread
IMPORT JIT_InternalThrow
IMPORT JIT_WriteBarrier
IMPORT TheUMEntryPrestubWorker
CHECK_STACK_ALIGNMENT
- bl GetThread
+ ; r0 = GetThread(). Trashes r5
+ INLINE_GETTHREAD r0, r5
cbz r0, UMThunkStub_DoThreadSetup
UMThunkStub_HaveThread
b UMThunkStub_InCooperativeMode
NESTED_END
+
+ INLINE_GETTHREAD_CONSTANT_POOL
; ------------------------------------------------------------------
IMPORT UMEntryPrestubUnwindFrameChainHandler
IMPORT UMThunkStubUnwindFrameChainHandler
IMPORT TheUMEntryPrestubWorker
- IMPORT GetThread
IMPORT CreateThreadBlockThrow
IMPORT UMThunkStubRareDisableWorker
IMPORT GetCurrentSavedRedirectContext
; save UMEntryThunk*
str x12, [sp, #UMThunkStub_HiddenArg]
- ; assuming GetThread does not clobber FP Args
- bl GetThread
+ ; x0 = GetThread(). Trashes x19
+ INLINE_GETTHREAD x0, x19
cbz x0, UMThunkStub_DoThreadSetup
UMThunkStub_HaveThread
NESTED_END
+ INLINE_GETTHREAD_CONSTANT_POOL
+
#ifdef FEATURE_HIJACK
; ------------------------------------------------------------------
; Hijack function for functions which return a scalar type or a struct (value type)
.model flat
include asmconstants.inc
+ include asmmacros.inc
option casemap:none
.code
EXTERN _g_TailCallFrameVptr:DWORD
EXTERN @JIT_FailFast@0:PROC
EXTERN _s_gsCookie:DWORD
-EXTERN _GetThread@0:PROC
EXTERN @JITutil_IsInstanceOfInterface@8:PROC
EXTERN @JITutil_ChkCastInterface@8:PROC
EXTERN @JITutil_IsInstanceOfAny@8:PROC
push ecx
push edx
- call _GetThread@0; eax = Thread*
+ ; eax = GetThread(). Trashes edx
+ INLINE_GETTHREAD eax, edx
+
mov [esp + 8], eax
ExtraSpace = 12 ; pThread, ecx, edx