[x86/Linux] 16-byte aligned ResolveWorkerChainLookupAsmStub (dotnet/coreclr#10754)
authorJonghyun Park <parjong@gmail.com>
Mon, 10 Apr 2017 12:51:10 +0000 (21:51 +0900)
committerJan Vorlicek <janvorli@microsoft.com>
Mon, 10 Apr 2017 12:51:10 +0000 (14:51 +0200)
Commit migrated from https://github.com/dotnet/coreclr/commit/14297c85ddef362b18f758b15dfac05de0601f4a

src/coreclr/src/vm/i386/asmhelpers.S

index fd5a2a9..45774fa 100644 (file)
@@ -1135,11 +1135,19 @@ LOCAL_LABEL(main_loop):
     // be quick to reset the counter so we don't get a bunch of contending threads
     mov     dword ptr [edx], CALL_STUB_CACHE_INITIAL_SUCCESS_COUNT
 
+    #define STACK_ALIGN_PADDING 12
+    sub     esp, STACK_ALIGN_PADDING
+
     // promote the entry to the beginning of the chain
     mov     ecx, eax
+
+    CHECK_STACK_ALIGNMENT
     // call C_FUNC(VirtualCallStubManager::PromoteChainEntry)
     call    C_FUNC(_ZN22VirtualCallStubManager17PromoteChainEntryEP16ResolveCacheElem)
 
+    add     esp, STACK_ALIGN_PADDING
+    #undef  STACK_ALIGN_PADDING
+
 LOCAL_LABEL(nopromote):
 
     pop     ecx