diff options
author | danmosemsft <danmose@microsoft.com> | 2017-02-14 22:20:22 -0800 |
---|---|---|
committer | danmosemsft <danmose@microsoft.com> | 2017-02-14 22:26:06 -0800 |
commit | fbbc3f800b105c79c24125685bb1d4e817c4ed28 (patch) | |
tree | 11005ade1f4a0a5f3fd10140fef567ba709d6d11 /src/vm/amd64 | |
parent | d3392e5684483ae5518dcaa775c8f86dc1b08ec6 (diff) | |
download | coreclr-fbbc3f800b105c79c24125685bb1d4e817c4ed28.tar.gz coreclr-fbbc3f800b105c79c24125685bb1d4e817c4ed28.tar.bz2 coreclr-fbbc3f800b105c79c24125685bb1d4e817c4ed28.zip |
Remove never defined FEATURE_REMOTING
Diffstat (limited to 'src/vm/amd64')
-rw-r--r-- | src/vm/amd64/GenericComPlusCallStubs.asm | 93 | ||||
-rw-r--r-- | src/vm/amd64/RemotingThunksAMD64.asm | 303 | ||||
-rw-r--r-- | src/vm/amd64/asmconstants.h | 12 |
3 files changed, 1 insertions, 407 deletions
diff --git a/src/vm/amd64/GenericComPlusCallStubs.asm b/src/vm/amd64/GenericComPlusCallStubs.asm index 9240ad5fa7..f7d670e6ea 100644 --- a/src/vm/amd64/GenericComPlusCallStubs.asm +++ b/src/vm/amd64/GenericComPlusCallStubs.asm @@ -16,101 +16,12 @@ include asmconstants.inc CTPMethodTable__s_pThunkTable equ ?s_pThunkTable@CTPMethodTable@@0PEAVMethodTable@@EA InstantiatedMethodDesc__IMD_GetComPlusCallInfo equ ?IMD_GetComPlusCallInfo@InstantiatedMethodDesc@@QEAAPEAUComPlusCallInfo@@XZ -ifdef FEATURE_REMOTING -extern CRemotingServices__DispatchInterfaceCall:proc -extern CTPMethodTable__s_pThunkTable:qword -extern InstantiatedMethodDesc__IMD_GetComPlusCallInfo:proc -endif extern CLRToCOMWorker:proc extern ProcessCLRException:proc -ifdef FEATURE_REMOTING -; -; in: -; r10: MethodDesc* -; rcx: 'this' object -; -; out: -; METHODDESC_REGISTER (r10) = MethodDesc* (for IL stubs) -; -LEAF_ENTRY GenericComPlusCallStub, _TEXT - - ; - ; check for a null 'this' pointer and - ; then see if this is a TransparentProxy - ; - - test rcx, rcx - jz do_com_call - - mov rax, [CTPMethodTable__s_pThunkTable] - cmp [rcx], rax - jne do_com_call - - ; - ; 'this' is a TransparentProxy - ; - jmp CRemotingServices__DispatchInterfaceCall - -do_com_call: - - ; - ; Check if the call is being made on an InstantiatedMethodDesc. - ; - - mov ax, [r10 + OFFSETOF__MethodDesc__m_wFlags] - and ax, MethodDescClassification__mdcClassification - cmp ax, MethodDescClassification__mcInstantiated - je GenericComPlusCallWorkerInstantiated - - ; - ; Check if there is an IL stub. - ; - - mov rax, [r10 + OFFSETOF__ComPlusCallMethodDesc__m_pComPlusCallInfo] - mov rax, [rax + OFFSETOF__ComPlusCallInfo__m_pILStub] - test rax, rax - jz GenericComPlusCallStubSlow - - TAILJMP_RAX - -LEAF_END GenericComPlusCallStub, _TEXT - -; We could inline IMD_GetComPlusCallInfo here but it would be ugly. -NESTED_ENTRY GenericComPlusCallWorkerInstantiated, _TEXT, ProcessCLRException - alloc_stack 68h - - save_reg_postrsp r10, 60h - - SAVE_ARGUMENT_REGISTERS 70h - - SAVE_FLOAT_ARGUMENT_REGISTERS 20h - - END_PROLOGUE - - mov rcx, r10 - call InstantiatedMethodDesc__IMD_GetComPlusCallInfo - - RESTORE_FLOAT_ARGUMENT_REGISTERS 20h - - RESTORE_ARGUMENT_REGISTERS 70h - - mov r10, [rsp + 60h] - - mov rax, [rax + OFFSETOF__ComPlusCallInfo__m_pILStub] - - add rsp, 68h - TAILJMP_RAX -NESTED_END GenericComPlusCallWorkerInstantiated, _TEXT -endif - -ifdef FEATURE_REMOTING -NESTED_ENTRY GenericComPlusCallStubSlow, _TEXT, ProcessCLRException -else NESTED_ENTRY GenericComPlusCallStub, _TEXT, ProcessCLRException -endif PROLOG_WITH_TRANSITION_BLOCK 8 @@ -137,11 +48,7 @@ endif EPILOG_WITH_TRANSITION_BLOCK_RETURN -ifdef FEATURE_REMOTING -NESTED_END GenericComPlusCallStubSlow, _TEXT -else NESTED_END GenericComPlusCallStub, _TEXT -endif endif ; FEATURE_COMINTEROP diff --git a/src/vm/amd64/RemotingThunksAMD64.asm b/src/vm/amd64/RemotingThunksAMD64.asm deleted file mode 100644 index 6d555e8beb..0000000000 --- a/src/vm/amd64/RemotingThunksAMD64.asm +++ /dev/null @@ -1,303 +0,0 @@ -; Licensed to the .NET Foundation under one or more agreements. -; The .NET Foundation licenses this file to you under the MIT license. -; See the LICENSE file in the project root for more information. - -include AsmMacros.inc -include AsmConstants.inc -ifdef FEATURE_REMOTING - -extern CallDescrWorkerUnwindFrameChainHandler:proc - -extern TransparentProxyStubWorker:proc - -; Stack frame layout: -; -; (stack parameters) -; ... -; r9 -; r8 -; rdx -; rcx <- TPSCC_PARAMS_OFFSET -; return address <- TPSCC_STACK_FRAME_SIZE -; r10 <- TPSCC_R10_OFFSET -; xmm3 -; xmm2 -; xmm1 -; xmm0 <- TPSCC_XMM_SAVE_OFFSET -; callee's r9 -; callee's r8 -; callee's rdx -; callee's rcx - -TPSCC_XMM_SAVE_OFFSET = 20h -TPSCC_R10_OFFSET = 60h -TPSCC_STACK_FRAME_SIZE = 68h -TPSCC_PARAMS_OFFSET = 70h - -TRANSPARENT_PROXY_STUB_PROLOGUE macro - alloc_stack TPSCC_STACK_FRAME_SIZE - - save_reg_postrsp r10, TPSCC_R10_OFFSET - - SAVE_ARGUMENT_REGISTERS TPSCC_PARAMS_OFFSET - SAVE_FLOAT_ARGUMENT_REGISTERS TPSCC_XMM_SAVE_OFFSET - - END_PROLOGUE - - endm - -NESTED_ENTRY TransparentProxyStub, _TEXT, CallDescrWorkerUnwindFrameChainHandler - - TRANSPARENT_PROXY_STUB_PROLOGUE - - ;; rcx: this - ;; [rsp]: slot number - - mov rax, [rcx + TransparentProxyObject___stub] - mov rcx, [rcx + TransparentProxyObject___stubData] - call rax - - RESTORE_ARGUMENT_REGISTERS TPSCC_PARAMS_OFFSET - RESTORE_FLOAT_ARGUMENT_REGISTERS TPSCC_XMM_SAVE_OFFSET - - mov r10, [rsp + TPSCC_R10_OFFSET] - - test rax, rax - jnz CrossContext - - mov r11, [rcx + TransparentProxyObject___pMT] - - ; Convert the slot number (r10) into the code address (in rax) - ; See MethodTable.h for details on vtable layout - shr r10, MethodTable_VtableSlotsPerChunkLog2 - mov rax, [r11 + r10*8 + METHODTABLE_OFFSET_VTABLE] - - mov r10, [rsp + TPSCC_R10_OFFSET] ; Reload the slot - and r10, MethodTable_VtableSlotsPerChunk-1 - mov rax, [rax + r10*8] - - add rsp, TPSCC_STACK_FRAME_SIZE - TAILJMP_RAX - -CrossContext: - add rsp, TPSCC_STACK_FRAME_SIZE - jmp TransparentProxyStub_CrossContext - -NESTED_END TransparentProxyStub, _TEXT - - -NESTED_ENTRY TransparentProxyStub_CrossContext, _TEXT - - PROLOG_WITH_TRANSITION_BLOCK 8 - - ; - ; Call TransparentProxyStubWorker. - ; - lea rcx, [rsp + __PWTB_TransitionBlock] ; pTransitionBlock - mov rdx, r10 ; MethodDesc * - call TransparentProxyStubWorker - - ; handle FP return values - - lea rcx, [rsp + __PWTB_FloatArgumentRegisters - 8] - cmp rax, 4 - jne @F - movss xmm0, real4 ptr [rcx] -@@: - cmp rax, 8 - jne @F - movsd xmm0, real8 ptr [rcx] -@@: - ; load return value - mov rax, [rcx] - - EPILOG_WITH_TRANSITION_BLOCK_RETURN - -NESTED_END TransparentProxyStub_CrossContext, _TEXT - -LEAF_ENTRY TransparentProxyStubPatch, _TEXT - ; make sure that the basic block is unique - test eax,12 -PATCH_LABEL TransparentProxyStubPatchLabel - ret -LEAF_END TransparentProxyStubPatch, _TEXT - -;+---------------------------------------------------------------------------- -; -; Method: CRemotingServices::CallFieldGetter private -; -; Synopsis: Calls the field getter function (Object::__FieldGetter) in -; managed code by setting up the stack and calling the target -; -;+---------------------------------------------------------------------------- -; extern "C" -;void __stdcall CRemotingServices__CallFieldGetter( MethodDesc *pMD, -; LPVOID pThis, -; LPVOID pFirst, -; LPVOID pSecond, -; LPVOID pThird -; ) -LEAF_ENTRY CRemotingServices__CallFieldGetter, _TEXT - -; +28 pThird -; +20 scratch area -; +18 scratch area -; +10 scratch area -; + 8 scratch area -; rsp return address - - mov METHODDESC_REGISTER, rcx - mov rcx, rdx - mov rdx, r8 - mov r8, r9 - mov r9, [rsp + 28h] - jmp TransparentProxyStub - -LEAF_END CRemotingServices__CallFieldGetter, _TEXT - - -;+---------------------------------------------------------------------------- -; -; Method: CRemotingServices::CallFieldSetter private -; -; Synopsis: Calls the field setter function (Object::__FieldSetter) in -; managed code by setting up the stack and calling the target -; -;+---------------------------------------------------------------------------- -; extern "C" -;void __stdcall CRemotingServices__CallFieldSetter( MethodDesc *pMD, -; LPVOID pThis, -; LPVOID pFirst, -; LPVOID pSecond, -; LPVOID pThird -; ) -LEAF_ENTRY CRemotingServices__CallFieldSetter, _TEXT - -; +28 pThird -; +20 scratch area -; +18 scratch area -; +10 scratch area -; + 8 scratch area -; rsp return address - - mov METHODDESC_REGISTER, rcx - mov rcx, rdx - mov rdx, r8 - mov r8, r9 - mov r9, [rsp + 28h] - jmp TransparentProxyStub - -LEAF_END CRemotingServices__CallFieldSetter, _TEXT - - -;; extern "C" ARG_SLOT __stdcall CTPMethodTable__CallTargetHelper2(const void *pTarget, -;; LPVOID pvFirst, -;; LPVOID pvSecond); -NESTED_ENTRY CTPMethodTable__CallTargetHelper2, _TEXT, CallDescrWorkerUnwindFrameChainHandler - alloc_stack 28h ;; alloc callee scratch and align the stack - END_PROLOGUE - - mov rax, rcx ; rax <- call target - mov rcx, rdx ; rcx <- first arg - mov rdx, r8 ; rdx <- second arg - - call rax - ;; It is important to have an instruction between the previous call and the epilog. - ;; If the return address is in epilog, OS won't call personality routine because - ;; it thinks personality routine does not help in this case. - nop - - ; epilog - add rsp, 28h - ret -NESTED_END CTPMethodTable__CallTargetHelper2, _TEXT - -;; extern "C" ARG_SLOT __stdcall CTPMethodTable__CallTargetHelper2(const void *pTarget, -;; LPVOID pvFirst, -;; LPVOID pvSecond, -;; LPVOID pvThird); -NESTED_ENTRY CTPMethodTable__CallTargetHelper3, _TEXT, CallDescrWorkerUnwindFrameChainHandler - alloc_stack 28h ;; alloc callee scratch and align the stack - END_PROLOGUE - - mov rax, rcx ; rax <- call target - mov rcx, rdx ; rcx <- first arg - mov rdx, r8 ; rdx <- second arg - mov r8, r9 ; r8 <- third arg - - call rax - - ;; It is important to have an instruction between the previous call and the epilog. - ;; If the return address is in epilog, OS won't call personality routine because - ;; it thinks personality routine does not help in this case. - nop - - ; epilog - add rsp, 28h - ret -NESTED_END CTPMethodTable__CallTargetHelper3, _TEXT - -NESTED_ENTRY CRemotingServices__DispatchInterfaceCall, _TEXT, CallDescrWorkerUnwindFrameChainHandler - - TRANSPARENT_PROXY_STUB_PROLOGUE - - ; - ; 'this' is a TransparentProxy. Call to stub to see if need to cross contexts. - ; - - mov rax, [rcx + TransparentProxyObject___stub] - mov rcx, [rcx + TransparentProxyObject___stubData] - call rax - - test rax, rax - jnz CrossContext - -extern VSD_GetTargetForTPWorkerQuick:proc - mov rcx, [rsp + TPSCC_PARAMS_OFFSET] ; rcx <- this - mov rdx, [rsp + TPSCC_R10_OFFSET] ; rdx <- Get the MethodDesc* or slot number - call VSD_GetTargetForTPWorkerQuick - - RESTORE_ARGUMENT_REGISTERS TPSCC_PARAMS_OFFSET - RESTORE_FLOAT_ARGUMENT_REGISTERS TPSCC_XMM_SAVE_OFFSET - - mov r10, [rsp + TPSCC_R10_OFFSET] - - test rax, rax ; Did we find a target? - jz SlowDispatch - - add rsp, TPSCC_STACK_FRAME_SIZE - TAILJMP_RAX - -SlowDispatch: - add rsp, TPSCC_STACK_FRAME_SIZE - jmp InContextTPDispatchAsmStub - -CrossContext: - RESTORE_ARGUMENT_REGISTERS TPSCC_PARAMS_OFFSET - RESTORE_FLOAT_ARGUMENT_REGISTERS TPSCC_XMM_SAVE_OFFSET - - mov r10, [rsp + TPSCC_R10_OFFSET] - - add rsp, TPSCC_STACK_FRAME_SIZE - jmp TransparentProxyStub_CrossContext - -NESTED_END CRemotingServices__DispatchInterfaceCall, _TEXT - -NESTED_ENTRY InContextTPDispatchAsmStub, _TEXT - - PROLOG_WITH_TRANSITION_BLOCK - -extern VSD_GetTargetForTPWorker:proc - lea rcx, [rsp + __PWTB_TransitionBlock] ; pTransitionBlock - mov rdx, r10 ; token - call VSD_GetTargetForTPWorker - - EPILOG_WITH_TRANSITION_BLOCK_TAILCALL - TAILJMP_RAX - -NESTED_END InContextTPDispatchAsmStub, _TEXT - -endif ; FEATURE_REMOTING - - end - diff --git a/src/vm/amd64/asmconstants.h b/src/vm/amd64/asmconstants.h index c78d5b51e4..9c3b22d8cc 100644 --- a/src/vm/amd64/asmconstants.h +++ b/src/vm/amd64/asmconstants.h @@ -174,16 +174,6 @@ ASMCONSTANTS_C_ASSERT(THREAD_CATCHATSAFEPOINT_BITS == Thread::TS_CatchAtSafePoin #endif // CROSSGEN_COMPILE -#ifdef FEATURE_REMOTING -#define TransparentProxyObject___stubData 0x10 -ASMCONSTANTS_C_ASSERT(TransparentProxyObject___stubData == offsetof(TransparentProxyObject, _stubData)) - -#define TransparentProxyObject___stub 0x28 -ASMCONSTANTS_C_ASSERT(TransparentProxyObject___stub == offsetof(TransparentProxyObject, _stub)) - -#define TransparentProxyObject___pMT 0x18 -ASMCONSTANTS_C_ASSERT(TransparentProxyObject___pMT == offsetof(TransparentProxyObject, _pMT)) -#endif // FEATURE_REMOTING #define OFFSETOF__NDirectMethodDesc__m_pWriteableData DBG_FRE(0x48, 0x20) ASMCONSTANTS_C_ASSERT(OFFSETOF__NDirectMethodDesc__m_pWriteableData == offsetof(NDirectMethodDesc, ndirect.m_pWriteableData)); @@ -277,7 +267,7 @@ ASMCONSTANTS_C_ASSERT(MethodTable_VtableSlotsPerChunk == VTABLE_SLOTS_PER_CHUNK) #define MethodTable_VtableSlotsPerChunkLog2 3 ASMCONSTANTS_C_ASSERT(MethodTable_VtableSlotsPerChunkLog2 == VTABLE_SLOTS_PER_CHUNK_LOG2) -#if defined(FEATURE_TYPEEQUIVALENCE) || defined(FEATURE_REMOTING) +#if defined(FEATURE_TYPEEQUIVALENCE) #define METHODTABLE_EQUIVALENCE_FLAGS 0x02000000 ASMCONSTANTS_C_ASSERT(METHODTABLE_EQUIVALENCE_FLAGS == MethodTable::enum_flag_HasTypeEquivalence); |