blob: f7d670e6ea1752db16e9c28122e4c64ea213f541 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
; 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.
; ==++==
;
;
; ==--==
ifdef FEATURE_COMINTEROP
include AsmMacros.inc
include asmconstants.inc
CTPMethodTable__s_pThunkTable equ ?s_pThunkTable@CTPMethodTable@@0PEAVMethodTable@@EA
InstantiatedMethodDesc__IMD_GetComPlusCallInfo equ ?IMD_GetComPlusCallInfo@InstantiatedMethodDesc@@QEAAPEAUComPlusCallInfo@@XZ
extern CLRToCOMWorker:proc
extern ProcessCLRException:proc
NESTED_ENTRY GenericComPlusCallStub, _TEXT, ProcessCLRException
PROLOG_WITH_TRANSITION_BLOCK 8
;
; Call CLRToCOMWorker.
;
lea rcx, [rsp + __PWTB_TransitionBlock] ; pTransitionBlock
mov rdx, r10 ; MethodDesc *
call CLRToCOMWorker
; 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 GenericComPlusCallStub, _TEXT
endif ; FEATURE_COMINTEROP
end
|