summaryrefslogtreecommitdiff
path: root/src/vm/amd64
diff options
context:
space:
mode:
authordanmosemsft <danmose@microsoft.com>2017-02-14 22:20:22 -0800
committerdanmosemsft <danmose@microsoft.com>2017-02-14 22:26:06 -0800
commitfbbc3f800b105c79c24125685bb1d4e817c4ed28 (patch)
tree11005ade1f4a0a5f3fd10140fef567ba709d6d11 /src/vm/amd64
parentd3392e5684483ae5518dcaa775c8f86dc1b08ec6 (diff)
downloadcoreclr-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.asm93
-rw-r--r--src/vm/amd64/RemotingThunksAMD64.asm303
-rw-r--r--src/vm/amd64/asmconstants.h12
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);