diff options
author | Jan Kotas <jkotas@microsoft.com> | 2016-10-01 17:31:20 +0300 |
---|---|---|
committer | Jan Kotas <jkotas@microsoft.com> | 2016-10-01 17:31:20 +0300 |
commit | b2f9dd370a321d5c38018b53401c81746fdd5133 (patch) | |
tree | ad8c77aae94d2f989bd3fb62b0ad528e6177fd7f /src/Native/Runtime/i386 | |
parent | de4dd52e9664a608d17fd86732e73d6ecc3ef962 (diff) |
Reduce amount of assembly code for CastableObjectSupport
Rewrote some of it in C++ or C#
[tfs-changeset: 1630452]
Diffstat (limited to 'src/Native/Runtime/i386')
-rw-r--r-- | src/Native/Runtime/i386/StubDispatch.asm | 40 |
1 files changed, 7 insertions, 33 deletions
diff --git a/src/Native/Runtime/i386/StubDispatch.asm b/src/Native/Runtime/i386/StubDispatch.asm index 5153d73b8..3a0873609 100644 --- a/src/Native/Runtime/i386/StubDispatch.asm +++ b/src/Native/Runtime/i386/StubDispatch.asm @@ -16,7 +16,6 @@ ifdef FEATURE_CACHED_INTERFACE_DISPATCH EXTERN RhpCidResolve : PROC EXTERN _RhpUniversalTransition_DebugStepTailCall@0 : PROC EXTERN RhpCastableObjectResolve : PROC -EXTERN _RhpCheckedAssignRefEDX : PROC EXTERN _t_TLS_DispatchCell:DWORD EXTERN __tls_index:DWORD @@ -31,31 +30,21 @@ GET_TLS_DISPATCH_CELL macro mov eax, [eax + SECTIONREL _t_TLS_DispatchCell] endm -_RhpGetTailCallTLSDispatchCell proc public - lea eax, RhpTailCallTLSDispatchCell - ret -_RhpGetTailCallTLSDispatchCell endp - -RhpTailCallTLSDispatchCell proc public +_RhpTailCallTLSDispatchCell proc public ;; Load the dispatch cell out of the TLS variable GET_TLS_DISPATCH_CELL ;; Tail call to the target of the dispatch cell jmp dword ptr [eax] -RhpTailCallTLSDispatchCell endp - -_RhpGetCastableObjectDispatchHelper_TailCalled proc public - lea eax, RhpCastableObjectDispatchHelper_TailCalled - ret -_RhpGetCastableObjectDispatchHelper_TailCalled endp +_RhpTailCallTLSDispatchCell endp -RhpCastableObjectDispatchHelper_TailCalled proc public +_RhpCastableObjectDispatchHelper_TailCalled proc public ;; Load the dispatch cell out of the TLS variable GET_TLS_DISPATCH_CELL - jmp RhpCastableObjectDispatchHelper -RhpCastableObjectDispatchHelper_TailCalled endp + jmp _RhpCastableObjectDispatchHelper +_RhpCastableObjectDispatchHelper_TailCalled endp -RhpCastableObjectDispatchHelper proc public +_RhpCastableObjectDispatchHelper proc public push ebp mov ebp, esp ;; TODO! Implement fast lookup helper to avoid the universal transition each time we @@ -70,22 +59,7 @@ RhpCastableObjectDispatchHelper proc public lea eax, RhpCastableObjectResolve push eax jmp _RhpUniversalTransition_DebugStepTailCall@0 -RhpCastableObjectDispatchHelper endp - -_RhpGetCastableObjectDispatchHelper proc public - lea eax, RhpCastableObjectDispatchHelper - ret -_RhpGetCastableObjectDispatchHelper endp - -_RhpGetCacheForCastableObject proc public - mov eax, [ecx+4] - ret -_RhpGetCacheForCastableObject endp - -_RhpSetCacheForCastableObject proc public - lea ecx, [ecx+4] - jmp _RhpCheckedAssignRefEDX ;; Is this the correct form for tailcall? -_RhpSetCacheForCastableObject endp +_RhpCastableObjectDispatchHelper endp ;; Macro that generates code to check a single cache entry. |