palloc_clang.txt

text/plain

Filename: palloc_clang.txt
Type: text/plain
Part: 1
Message: Re: Avoid stack frame setup in performance critical routines using tail calls
 Percent |	Source code & Disassembly of postgres for cycles (123 samples, percent: local period)
-----------------------------------------------------------------------------------------------------
         :
         :
         :
         :            Disassembly of section .text:
         :
         :            00000000008ee3a0 <palloc>:
         :            palloc():
         :            MemoryContextStatsDetail(TopMemoryContext, 100, false);
         :            }
         :
         :            void *
         :            palloc(Size size)
         :            {
    9.12 :   8ee3a0: mov    %rdi,%rsi
         :            /* duplicates MemoryContextAlloc to avoid increased overhead */
         :            void       *ret;
         :            MemoryContext context = CurrentMemoryContext;
    2.47 :   8ee3a3: mov    0x295a86(%rip),%rdi        # b83e30 <CurrentMemoryContext>
         :
         :            AssertArg(MemoryContextIsValid(context));
         :            AssertNotInCriticalSection(context);
         :            context->isReset = false;
   22.83 :   8ee3aa: movb   $0x0,0x4(%rdi)
         :
         :            ret = context->methods->alloc(context, size, 0);
   34.25 :   8ee3ae: mov    0x10(%rdi),%rax
    7.68 :   8ee3b2: mov    (%rax),%rax
   23.66 :   8ee3b5: xor    %edx,%edx
    0.00 :   8ee3b7: jmp    *%rax